Merge remote-tracking branch 'aosp/upstream-master' into update-shaderc
Includes:
88e88e59 HLSL: Non-functional: Remove dead .length() code.
516d92d3 HLSL: Non-functional: Drive existing method recognition by syntax, not by name.
78388726 HLSL: Non-functional: Don't process function name/parameters before expected a function declaration.
b7201f8e Merge pull request #756 from steve-lunarg/getdimensions-fix
ca71d946 HLSL: Grammar: Generalize accepting a declaration to accept an aggregate of subtrees.
3ce4536a HLSL: use LOD form of ImageQuerySize when needed.
057df293 HLSL: Fix #754: recognize type casts in if-statements separately from declarations.
621c0e3d Merge pull request #755 from steve-lunarg/sb-orderfix
40efe5ce WIP: HLSL: Fix ordering defect if global SB decl after fn param
33f85b6e SPV: Allow push constant buffers to not have an instance name.
789086a8 HLSL: Test for issue #699.
322cb192 Merge pull request #750 from dgkoch/rename_KHX_to_EXT
27ffb299 HLSL: Add 'class' keyword as (so far) synonym for 'struct'.
efc97279 Rename KHX to EXT to match the released specs
c18cae21 Merge pull request #748 from dgkoch/dgkoch_build_fixes2
d9b7a850 More build fixes
854fe247 HLSL: Fix #747: accept 'struct' in front of previously user-defined type name.
0479437a SPV: Fix #739: OpSelect can only operate on scalars and vectors.
173c0c01 Merge pull request #744 from realitix/sanitize_sh_link
9c3f7b60 Merge pull request #746 from dgkoch/dgkoch_build_fixes
efeefd98 Build: Another fix for issue #718: implement the hidden methods of tFinalize.
197082ca Fix build warnings on some platforms
bc3fdcc8 Sanitize ShaderLang.h
3494d71c PP: Fix issue #738: don't assert on characters within a string.
fb22b69f PP: Partially address issue #738: handle premature end of argument when token pasting.
45c1b5b9 Merge pull request #742 from steve-lunarg/f16tof32-typefix
fdbfb65e HLSL: small fix for index type in f16tof32 opcode
5a042c06 GLSL: Fix #741: rationalize per-block vs. per-member offset checking.
69a2c696 Merge pull request #736 from steve-lunarg/structbuffer-params
b67b4a70 PP: Address #737: accept 'h'/'H' floating-point suffix more broadly.
dd8287a1 WIP: HLSL: add structuredbuffer pass by reference in fn params
Test: checkbuild.py on Linux; unit tests on Windows
Change-Id: Icc17a9b321904417f9da43d5b0d2ca60e4d4e980
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index ff23598..5385eee 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -1789,7 +1789,8 @@
// Crucially, side effects must be avoided, and there are performance trade-offs.
// Return true if good idea (and safe) for OpSelect, false otherwise.
const auto selectPolicy = [&]() -> bool {
- if (node->getBasicType() == glslang::EbtVoid)
+ if ((!node->getType().isScalar() && !node->getType().isVector()) ||
+ node->getBasicType() == glslang::EbtVoid)
return false;
if (node->getTrueBlock() == nullptr ||
@@ -2740,7 +2741,8 @@
for (int p = 0; p < (int)parameters.size(); ++p) {
const glslang::TType& paramType = parameters[p]->getAsTyped()->getType();
spv::Id typeId = convertGlslangToSpvType(paramType);
- if (paramType.containsOpaque())
+ if (paramType.containsOpaque() ||
+ (paramType.getBasicType() == glslang::EbtBlock && paramType.getQualifier().storage == glslang::EvqBuffer))
typeId = builder.makePointer(TranslateStorageClass(paramType), typeId);
else if (paramType.getQualifier().storage != glslang::EvqConstReadOnly)
typeId = builder.makePointer(spv::StorageClassFunction, typeId);
@@ -3220,7 +3222,8 @@
for (int a = 0; a < (int)glslangArgs.size(); ++a) {
const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType();
spv::Id arg;
- if (paramType.containsOpaque()) {
+ if (paramType.containsOpaque() ||
+ (paramType.getBasicType() == glslang::EbtBlock && qualifiers[a] == glslang::EvqBuffer)) {
builder.setAccessChain(lValues[lValueCount]);
arg = builder.accessChainGetLValue();
++lValueCount;
diff --git a/Test/120.frag b/Test/120.frag
index 028d308..ea35b80 100644
--- a/Test/120.frag
+++ b/Test/120.frag
@@ -243,4 +243,6 @@
b ? foo121111() : foo12111();
b ? foo121111() : 4; // ERROR
b ? 3 : foo12111(); // ERROR
-}
\ No newline at end of file
+}
+
+float halfFloat1 = 1.0h; // syntax ERROR
diff --git a/Test/badChars.frag b/Test/badChars.frag
index d67bf3a..3e9700d 100644
--- a/Test/badChars.frag
+++ b/Test/badChars.frag
@@ -4,3 +4,4 @@
#if
#endif
int aÿ
+#define A "ÿ
\ No newline at end of file
diff --git a/Test/baseResults/120.frag.out b/Test/baseResults/120.frag.out
index 5028b75..c64eacc 100644
--- a/Test/baseResults/120.frag.out
+++ b/Test/baseResults/120.frag.out
@@ -52,7 +52,8 @@
ERROR: 0:212: 'sampler2DRect' : Reserved word.
ERROR: 0:244: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type 'global void' and a right operand of type 'const int' (or there is no acceptable conversion)
ERROR: 0:245: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type 'const int' and a right operand of type 'global void' (or there is no acceptable conversion)
-ERROR: 53 compilation errors. No code generated.
+ERROR: 0:248: '' : syntax error
+ERROR: 54 compilation errors. No code generated.
Shader version: 120
@@ -645,6 +646,7 @@
0:? 's2DRbad' (uniform sampler2DRect)
0:? 's2DR' (uniform sampler2DRect)
0:? 's2DRS' (uniform sampler2DRectShadow)
+0:? 'halfFloat1' (global float)
Linked fragment stage:
@@ -688,4 +690,5 @@
0:? 's2DRbad' (uniform sampler2DRect)
0:? 's2DR' (uniform sampler2DRect)
0:? 's2DRS' (uniform sampler2DRectShadow)
+0:? 'halfFloat1' (global float)
diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out
index cc6b13f..9de843f 100644
--- a/Test/baseResults/420.vert.out
+++ b/Test/baseResults/420.vert.out
@@ -47,12 +47,13 @@
ERROR: 0:143: 'rgba32ui' : does not apply to signed integer images
ERROR: 0:144: 'r8ui' : does not apply to signed integer images
ERROR: 0:147: 'offset on block member' : not supported for this version or the enabled extensions
+ERROR: 0:147: 'offset/align' : can only be used with std140 or std430 layout packing
ERROR: 0:157: 'textureQueryLevels' : no matching overloaded function found
ERROR: 0:157: 'assign' : cannot convert from 'const float' to 'temp int'
ERROR: 0:158: 'textureQueryLevels' : no matching overloaded function found
ERROR: 0:158: 'assign' : cannot convert from 'const float' to 'temp int'
WARNING: 0:161: '[]' : assuming array size of one for compile-time checking of binding numbers for implicitly-sized array
-ERROR: 50 compilation errors. No code generated.
+ERROR: 51 compilation errors. No code generated.
Shader version: 420
diff --git a/Test/baseResults/430.vert.out b/Test/baseResults/430.vert.out
index 8cd1156..358d6c8 100644
--- a/Test/baseResults/430.vert.out
+++ b/Test/baseResults/430.vert.out
@@ -28,8 +28,9 @@
ERROR: 0:65: 'uniform buffer-member align' : not supported for this version or the enabled extensions
ERROR: 0:65: 'offset on block member' : not supported for this version or the enabled extensions
ERROR: 0:66: 'offset on block member' : not supported for this version or the enabled extensions
-ERROR: 0:64: 'offset/align' : can only be used with std140 or std430 layout packing
-ERROR: 0:65: 'align' : can only be used with std140 or std430 layout packing
+ERROR: 0:64: 'align' : can only be used with std140 or std430 layout packing
+ERROR: 0:65: 'offset/align' : can only be used with std140 or std430 layout packing
+ERROR: 0:66: 'offset/align' : can only be used with std140 or std430 layout packing
ERROR: 0:71: 'offset on block member' : not supported for this version or the enabled extensions
ERROR: 0:74: 'gl_MaxTransformFeedbackBuffers' : required extension not requested: GL_ARB_enhanced_layouts
ERROR: 0:75: 'gl_MaxTransformFeedbackInterleavedComponents' : required extension not requested: GL_ARB_enhanced_layouts
@@ -63,7 +64,7 @@
ERROR: 0:221: 'assign' : cannot convert from 'const float' to 'temp int'
ERROR: 0:222: 'textureQueryLevels' : no matching overloaded function found
ERROR: 0:222: 'assign' : cannot convert from 'const float' to 'temp int'
-ERROR: 63 compilation errors. No code generated.
+ERROR: 64 compilation errors. No code generated.
Shader version: 430
diff --git a/Test/baseResults/440.frag.out b/Test/baseResults/440.frag.out
index bdc1b09..5600172 100644
--- a/Test/baseResults/440.frag.out
+++ b/Test/baseResults/440.frag.out
@@ -22,11 +22,11 @@
ERROR: 0:39: 'output block' : not supported in this stage: fragment
ERROR: 0:39: 'layout' : offset/align can only be used on a uniform or buffer
ERROR: 0:39: 'offset' : only applies to block members, not blocks
-ERROR: 0:42: 'offset/align' : can only be used with std140 or std430 layout packing
-ERROR: 0:43: 'offset/align' : can only be used with std140 or std430 layout packing
+ERROR: 0:42: 'align' : can only be used with std140 or std430 layout packing
+ERROR: 0:43: 'align' : can only be used with std140 or std430 layout packing
ERROR: 0:43: 'layout' : offset/align can only be used on a uniform or buffer
ERROR: 0:44: 'output block' : not supported in this stage: fragment
-ERROR: 0:44: 'offset/align' : can only be used with std140 or std430 layout packing
+ERROR: 0:44: 'align' : can only be used with std140 or std430 layout packing
ERROR: 0:44: 'layout' : offset/align can only be used on a uniform or buffer
ERROR: 0:46: 'offset' : cannot specify on a variable declaration
ERROR: 0:47: 'layout' : offset/align can only be used on a uniform or buffer
@@ -37,8 +37,9 @@
ERROR: 0:54: 'layout' : matrix or packing qualifiers can only be used on a uniform or buffer
ERROR: 0:55: 'layout' : cannot specify packing on a variable declaration
ERROR: 0:57: 'align' : must be a power of 2
-ERROR: 0:58: 'align' : can only be used with std140 or std430 layout packing
-ERROR: 0:63: 'align' : can only be used with std140 or std430 layout packing
+ERROR: 0:58: 'offset/align' : can only be used with std140 or std430 layout packing
+ERROR: 0:62: 'offset/align' : can only be used with std140 or std430 layout packing
+ERROR: 0:63: 'offset/align' : can only be used with std140 or std430 layout packing
ERROR: 0:62: 'layout' : offset/align can only be used on a uniform or buffer
ERROR: 0:63: 'layout' : offset/align can only be used on a uniform or buffer
ERROR: 0:84: 'align' : must be a power of 2
@@ -48,7 +49,7 @@
ERROR: 0:105: 'align' : must be a power of 2
ERROR: 0:102: 'offset' : cannot lie in previous members
ERROR: 0:104: 'offset' : must be a multiple of the member's alignment
-ERROR: 48 compilation errors. No code generated.
+ERROR: 49 compilation errors. No code generated.
Shader version: 440
diff --git a/Test/baseResults/badChars.frag.out b/Test/baseResults/badChars.frag.out
index e9ebff7..9a2aeca 100644
--- a/Test/baseResults/badChars.frag.out
+++ b/Test/baseResults/badChars.frag.out
@@ -5,8 +5,9 @@
ERROR: 0:4: 'preprocessor evaluation' : bad expression
ERROR: 0:4: '#if' : unexpected tokens following directive
ERROR: 0:6: '' : unexpected token
+ERROR: 0:7: 'string' : End of line in string
ERROR: 0:7: '' : syntax error
-ERROR: 7 compilation errors. No code generated.
+ERROR: 8 compilation errors. No code generated.
Shader version: 100
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
index e426e75..7c73d8d 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
@@ -10,6 +10,8 @@
0:65 'sizeQueryTemp' (temp uint)
0:65 textureSize (temp uint)
0:65 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:65 Constant:
+0:65 0 (const int)
0:65 move second child to first child (temp uint)
0:65 'WidthU' (temp uint)
0:65 'sizeQueryTemp' (temp uint)
@@ -32,6 +34,8 @@
0:69 'sizeQueryTemp' (temp uint)
0:69 textureSize (temp uint)
0:69 'g_tTex1di4' (uniform itexture1D)
+0:69 Constant:
+0:69 0 (const int)
0:69 move second child to first child (temp uint)
0:69 'WidthU' (temp uint)
0:69 'sizeQueryTemp' (temp uint)
@@ -54,6 +58,8 @@
0:73 'sizeQueryTemp' (temp uint)
0:73 textureSize (temp uint)
0:73 'g_tTex1du4' (uniform utexture1D)
+0:73 Constant:
+0:73 0 (const int)
0:73 move second child to first child (temp uint)
0:73 'WidthU' (temp uint)
0:73 'sizeQueryTemp' (temp uint)
@@ -76,6 +82,8 @@
0:77 'sizeQueryTemp' (temp 2-component vector of uint)
0:77 textureSize (temp 2-component vector of uint)
0:77 'g_tTex1df4a' (uniform texture1DArray)
+0:77 Constant:
+0:77 0 (const int)
0:77 move second child to first child (temp uint)
0:77 'WidthU' (temp uint)
0:77 direct index (temp uint)
@@ -116,6 +124,8 @@
0:81 'sizeQueryTemp' (temp 2-component vector of uint)
0:81 textureSize (temp 2-component vector of uint)
0:81 'g_tTex1di4a' (uniform itexture1DArray)
+0:81 Constant:
+0:81 0 (const int)
0:81 move second child to first child (temp uint)
0:81 'WidthU' (temp uint)
0:81 direct index (temp uint)
@@ -156,6 +166,8 @@
0:85 'sizeQueryTemp' (temp 2-component vector of uint)
0:85 textureSize (temp 2-component vector of uint)
0:85 'g_tTex1du4a' (uniform utexture1DArray)
+0:85 Constant:
+0:85 0 (const int)
0:85 move second child to first child (temp uint)
0:85 'WidthU' (temp uint)
0:85 direct index (temp uint)
@@ -196,6 +208,8 @@
0:89 'sizeQueryTemp' (temp 2-component vector of uint)
0:89 textureSize (temp 2-component vector of uint)
0:89 'g_tTex2df4' (uniform texture2D)
+0:89 Constant:
+0:89 0 (const int)
0:89 move second child to first child (temp uint)
0:89 'WidthU' (temp uint)
0:89 direct index (temp uint)
@@ -236,6 +250,8 @@
0:93 'sizeQueryTemp' (temp 2-component vector of uint)
0:93 textureSize (temp 2-component vector of uint)
0:93 'g_tTex2di4' (uniform itexture2D)
+0:93 Constant:
+0:93 0 (const int)
0:93 move second child to first child (temp uint)
0:93 'WidthU' (temp uint)
0:93 direct index (temp uint)
@@ -276,6 +292,8 @@
0:97 'sizeQueryTemp' (temp 2-component vector of uint)
0:97 textureSize (temp 2-component vector of uint)
0:97 'g_tTex2du4' (uniform utexture2D)
+0:97 Constant:
+0:97 0 (const int)
0:97 move second child to first child (temp uint)
0:97 'WidthU' (temp uint)
0:97 direct index (temp uint)
@@ -316,6 +334,8 @@
0:101 'sizeQueryTemp' (temp 3-component vector of uint)
0:101 textureSize (temp 3-component vector of uint)
0:101 'g_tTex2df4a' (uniform texture2DArray)
+0:101 Constant:
+0:101 0 (const int)
0:101 move second child to first child (temp uint)
0:101 'WidthU' (temp uint)
0:101 direct index (temp uint)
@@ -368,6 +388,8 @@
0:105 'sizeQueryTemp' (temp 3-component vector of uint)
0:105 textureSize (temp 3-component vector of uint)
0:105 'g_tTex2di4a' (uniform itexture2DArray)
+0:105 Constant:
+0:105 0 (const int)
0:105 move second child to first child (temp uint)
0:105 'WidthU' (temp uint)
0:105 direct index (temp uint)
@@ -420,6 +442,8 @@
0:109 'sizeQueryTemp' (temp 3-component vector of uint)
0:109 textureSize (temp 3-component vector of uint)
0:109 'g_tTex2du4a' (uniform utexture2DArray)
+0:109 Constant:
+0:109 0 (const int)
0:109 move second child to first child (temp uint)
0:109 'WidthU' (temp uint)
0:109 direct index (temp uint)
@@ -472,6 +496,8 @@
0:113 'sizeQueryTemp' (temp 3-component vector of uint)
0:113 textureSize (temp 3-component vector of uint)
0:113 'g_tTex3df4' (uniform texture3D)
+0:113 Constant:
+0:113 0 (const int)
0:113 move second child to first child (temp uint)
0:113 'WidthU' (temp uint)
0:113 direct index (temp uint)
@@ -524,6 +550,8 @@
0:117 'sizeQueryTemp' (temp 3-component vector of uint)
0:117 textureSize (temp 3-component vector of uint)
0:117 'g_tTex3di4' (uniform itexture3D)
+0:117 Constant:
+0:117 0 (const int)
0:117 move second child to first child (temp uint)
0:117 'WidthU' (temp uint)
0:117 direct index (temp uint)
@@ -576,6 +604,8 @@
0:121 'sizeQueryTemp' (temp 3-component vector of uint)
0:121 textureSize (temp 3-component vector of uint)
0:121 'g_tTex3du4' (uniform utexture3D)
+0:121 Constant:
+0:121 0 (const int)
0:121 move second child to first child (temp uint)
0:121 'WidthU' (temp uint)
0:121 direct index (temp uint)
@@ -628,6 +658,8 @@
0:125 'sizeQueryTemp' (temp 2-component vector of uint)
0:125 textureSize (temp 2-component vector of uint)
0:125 'g_tTexcdf4' (uniform textureCube)
+0:125 Constant:
+0:125 0 (const int)
0:125 move second child to first child (temp uint)
0:125 'WidthU' (temp uint)
0:125 direct index (temp uint)
@@ -668,6 +700,8 @@
0:129 'sizeQueryTemp' (temp 2-component vector of uint)
0:129 textureSize (temp 2-component vector of uint)
0:129 'g_tTexcdi4' (uniform itextureCube)
+0:129 Constant:
+0:129 0 (const int)
0:129 move second child to first child (temp uint)
0:129 'WidthU' (temp uint)
0:129 direct index (temp uint)
@@ -708,6 +742,8 @@
0:133 'sizeQueryTemp' (temp 2-component vector of uint)
0:133 textureSize (temp 2-component vector of uint)
0:133 'g_tTexcdu4' (uniform utextureCube)
+0:133 Constant:
+0:133 0 (const int)
0:133 move second child to first child (temp uint)
0:133 'WidthU' (temp uint)
0:133 direct index (temp uint)
@@ -748,6 +784,8 @@
0:137 'sizeQueryTemp' (temp 3-component vector of uint)
0:137 textureSize (temp 3-component vector of uint)
0:137 'g_tTexcdf4a' (uniform textureCubeArray)
+0:137 Constant:
+0:137 0 (const int)
0:137 move second child to first child (temp uint)
0:137 'WidthU' (temp uint)
0:137 direct index (temp uint)
@@ -800,6 +838,8 @@
0:141 'sizeQueryTemp' (temp 3-component vector of uint)
0:141 textureSize (temp 3-component vector of uint)
0:141 'g_tTexcdi4a' (uniform itextureCubeArray)
+0:141 Constant:
+0:141 0 (const int)
0:141 move second child to first child (temp uint)
0:141 'WidthU' (temp uint)
0:141 direct index (temp uint)
@@ -852,6 +892,8 @@
0:145 'sizeQueryTemp' (temp 3-component vector of uint)
0:145 textureSize (temp 3-component vector of uint)
0:145 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:145 Constant:
+0:145 0 (const int)
0:145 move second child to first child (temp uint)
0:145 'WidthU' (temp uint)
0:145 direct index (temp uint)
@@ -1128,6 +1170,8 @@
0:65 'sizeQueryTemp' (temp uint)
0:65 textureSize (temp uint)
0:65 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:65 Constant:
+0:65 0 (const int)
0:65 move second child to first child (temp uint)
0:65 'WidthU' (temp uint)
0:65 'sizeQueryTemp' (temp uint)
@@ -1150,6 +1194,8 @@
0:69 'sizeQueryTemp' (temp uint)
0:69 textureSize (temp uint)
0:69 'g_tTex1di4' (uniform itexture1D)
+0:69 Constant:
+0:69 0 (const int)
0:69 move second child to first child (temp uint)
0:69 'WidthU' (temp uint)
0:69 'sizeQueryTemp' (temp uint)
@@ -1172,6 +1218,8 @@
0:73 'sizeQueryTemp' (temp uint)
0:73 textureSize (temp uint)
0:73 'g_tTex1du4' (uniform utexture1D)
+0:73 Constant:
+0:73 0 (const int)
0:73 move second child to first child (temp uint)
0:73 'WidthU' (temp uint)
0:73 'sizeQueryTemp' (temp uint)
@@ -1194,6 +1242,8 @@
0:77 'sizeQueryTemp' (temp 2-component vector of uint)
0:77 textureSize (temp 2-component vector of uint)
0:77 'g_tTex1df4a' (uniform texture1DArray)
+0:77 Constant:
+0:77 0 (const int)
0:77 move second child to first child (temp uint)
0:77 'WidthU' (temp uint)
0:77 direct index (temp uint)
@@ -1234,6 +1284,8 @@
0:81 'sizeQueryTemp' (temp 2-component vector of uint)
0:81 textureSize (temp 2-component vector of uint)
0:81 'g_tTex1di4a' (uniform itexture1DArray)
+0:81 Constant:
+0:81 0 (const int)
0:81 move second child to first child (temp uint)
0:81 'WidthU' (temp uint)
0:81 direct index (temp uint)
@@ -1274,6 +1326,8 @@
0:85 'sizeQueryTemp' (temp 2-component vector of uint)
0:85 textureSize (temp 2-component vector of uint)
0:85 'g_tTex1du4a' (uniform utexture1DArray)
+0:85 Constant:
+0:85 0 (const int)
0:85 move second child to first child (temp uint)
0:85 'WidthU' (temp uint)
0:85 direct index (temp uint)
@@ -1314,6 +1368,8 @@
0:89 'sizeQueryTemp' (temp 2-component vector of uint)
0:89 textureSize (temp 2-component vector of uint)
0:89 'g_tTex2df4' (uniform texture2D)
+0:89 Constant:
+0:89 0 (const int)
0:89 move second child to first child (temp uint)
0:89 'WidthU' (temp uint)
0:89 direct index (temp uint)
@@ -1354,6 +1410,8 @@
0:93 'sizeQueryTemp' (temp 2-component vector of uint)
0:93 textureSize (temp 2-component vector of uint)
0:93 'g_tTex2di4' (uniform itexture2D)
+0:93 Constant:
+0:93 0 (const int)
0:93 move second child to first child (temp uint)
0:93 'WidthU' (temp uint)
0:93 direct index (temp uint)
@@ -1394,6 +1452,8 @@
0:97 'sizeQueryTemp' (temp 2-component vector of uint)
0:97 textureSize (temp 2-component vector of uint)
0:97 'g_tTex2du4' (uniform utexture2D)
+0:97 Constant:
+0:97 0 (const int)
0:97 move second child to first child (temp uint)
0:97 'WidthU' (temp uint)
0:97 direct index (temp uint)
@@ -1434,6 +1494,8 @@
0:101 'sizeQueryTemp' (temp 3-component vector of uint)
0:101 textureSize (temp 3-component vector of uint)
0:101 'g_tTex2df4a' (uniform texture2DArray)
+0:101 Constant:
+0:101 0 (const int)
0:101 move second child to first child (temp uint)
0:101 'WidthU' (temp uint)
0:101 direct index (temp uint)
@@ -1486,6 +1548,8 @@
0:105 'sizeQueryTemp' (temp 3-component vector of uint)
0:105 textureSize (temp 3-component vector of uint)
0:105 'g_tTex2di4a' (uniform itexture2DArray)
+0:105 Constant:
+0:105 0 (const int)
0:105 move second child to first child (temp uint)
0:105 'WidthU' (temp uint)
0:105 direct index (temp uint)
@@ -1538,6 +1602,8 @@
0:109 'sizeQueryTemp' (temp 3-component vector of uint)
0:109 textureSize (temp 3-component vector of uint)
0:109 'g_tTex2du4a' (uniform utexture2DArray)
+0:109 Constant:
+0:109 0 (const int)
0:109 move second child to first child (temp uint)
0:109 'WidthU' (temp uint)
0:109 direct index (temp uint)
@@ -1590,6 +1656,8 @@
0:113 'sizeQueryTemp' (temp 3-component vector of uint)
0:113 textureSize (temp 3-component vector of uint)
0:113 'g_tTex3df4' (uniform texture3D)
+0:113 Constant:
+0:113 0 (const int)
0:113 move second child to first child (temp uint)
0:113 'WidthU' (temp uint)
0:113 direct index (temp uint)
@@ -1642,6 +1710,8 @@
0:117 'sizeQueryTemp' (temp 3-component vector of uint)
0:117 textureSize (temp 3-component vector of uint)
0:117 'g_tTex3di4' (uniform itexture3D)
+0:117 Constant:
+0:117 0 (const int)
0:117 move second child to first child (temp uint)
0:117 'WidthU' (temp uint)
0:117 direct index (temp uint)
@@ -1694,6 +1764,8 @@
0:121 'sizeQueryTemp' (temp 3-component vector of uint)
0:121 textureSize (temp 3-component vector of uint)
0:121 'g_tTex3du4' (uniform utexture3D)
+0:121 Constant:
+0:121 0 (const int)
0:121 move second child to first child (temp uint)
0:121 'WidthU' (temp uint)
0:121 direct index (temp uint)
@@ -1746,6 +1818,8 @@
0:125 'sizeQueryTemp' (temp 2-component vector of uint)
0:125 textureSize (temp 2-component vector of uint)
0:125 'g_tTexcdf4' (uniform textureCube)
+0:125 Constant:
+0:125 0 (const int)
0:125 move second child to first child (temp uint)
0:125 'WidthU' (temp uint)
0:125 direct index (temp uint)
@@ -1786,6 +1860,8 @@
0:129 'sizeQueryTemp' (temp 2-component vector of uint)
0:129 textureSize (temp 2-component vector of uint)
0:129 'g_tTexcdi4' (uniform itextureCube)
+0:129 Constant:
+0:129 0 (const int)
0:129 move second child to first child (temp uint)
0:129 'WidthU' (temp uint)
0:129 direct index (temp uint)
@@ -1826,6 +1902,8 @@
0:133 'sizeQueryTemp' (temp 2-component vector of uint)
0:133 textureSize (temp 2-component vector of uint)
0:133 'g_tTexcdu4' (uniform utextureCube)
+0:133 Constant:
+0:133 0 (const int)
0:133 move second child to first child (temp uint)
0:133 'WidthU' (temp uint)
0:133 direct index (temp uint)
@@ -1866,6 +1944,8 @@
0:137 'sizeQueryTemp' (temp 3-component vector of uint)
0:137 textureSize (temp 3-component vector of uint)
0:137 'g_tTexcdf4a' (uniform textureCubeArray)
+0:137 Constant:
+0:137 0 (const int)
0:137 move second child to first child (temp uint)
0:137 'WidthU' (temp uint)
0:137 direct index (temp uint)
@@ -1918,6 +1998,8 @@
0:141 'sizeQueryTemp' (temp 3-component vector of uint)
0:141 textureSize (temp 3-component vector of uint)
0:141 'g_tTexcdi4a' (uniform itextureCubeArray)
+0:141 Constant:
+0:141 0 (const int)
0:141 move second child to first child (temp uint)
0:141 'WidthU' (temp uint)
0:141 direct index (temp uint)
@@ -1970,6 +2052,8 @@
0:145 'sizeQueryTemp' (temp 3-component vector of uint)
0:145 textureSize (temp 3-component vector of uint)
0:145 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:145 Constant:
+0:145 0 (const int)
0:145 move second child to first child (temp uint)
0:145 'WidthU' (temp uint)
0:145 direct index (temp uint)
@@ -2251,118 +2335,118 @@
Name 10 "@main("
Name 14 "sizeQueryTemp"
Name 17 "g_tTex1df4"
- Name 21 "WidthU"
- Name 23 "sizeQueryTemp"
- Name 28 "NumberOfLevelsU"
- Name 31 "sizeQueryTemp"
- Name 34 "g_tTex1di4"
- Name 38 "sizeQueryTemp"
- Name 44 "sizeQueryTemp"
- Name 47 "g_tTex1du4"
- Name 51 "sizeQueryTemp"
- Name 59 "sizeQueryTemp"
- Name 62 "g_tTex1df4a"
- Name 69 "ElementsU"
- Name 73 "sizeQueryTemp"
- Name 82 "sizeQueryTemp"
- Name 85 "g_tTex1di4a"
- Name 92 "sizeQueryTemp"
- Name 101 "sizeQueryTemp"
- Name 104 "g_tTex1du4a"
- Name 111 "sizeQueryTemp"
- Name 120 "sizeQueryTemp"
- Name 123 "g_tTex2df4"
- Name 128 "HeightU"
- Name 131 "sizeQueryTemp"
- Name 140 "sizeQueryTemp"
- Name 143 "g_tTex2di4"
- Name 150 "sizeQueryTemp"
- Name 159 "sizeQueryTemp"
- Name 162 "g_tTex2du4"
- Name 169 "sizeQueryTemp"
- Name 180 "sizeQueryTemp"
- Name 183 "g_tTex2df4a"
- Name 194 "sizeQueryTemp"
- Name 205 "sizeQueryTemp"
- Name 208 "g_tTex2di4a"
- Name 217 "sizeQueryTemp"
- Name 228 "sizeQueryTemp"
- Name 231 "g_tTex2du4a"
- Name 240 "sizeQueryTemp"
- Name 251 "sizeQueryTemp"
- Name 254 "g_tTex3df4"
- Name 261 "DepthU"
- Name 264 "sizeQueryTemp"
- Name 275 "sizeQueryTemp"
- Name 278 "g_tTex3di4"
- Name 287 "sizeQueryTemp"
- Name 298 "sizeQueryTemp"
- Name 301 "g_tTex3du4"
- Name 310 "sizeQueryTemp"
- Name 321 "sizeQueryTemp"
- Name 324 "g_tTexcdf4"
- Name 331 "sizeQueryTemp"
- Name 340 "sizeQueryTemp"
- Name 343 "g_tTexcdi4"
- Name 350 "sizeQueryTemp"
- Name 359 "sizeQueryTemp"
- Name 362 "g_tTexcdu4"
- Name 369 "sizeQueryTemp"
- Name 378 "sizeQueryTemp"
- Name 381 "g_tTexcdf4a"
- Name 390 "sizeQueryTemp"
- Name 401 "sizeQueryTemp"
- Name 404 "g_tTexcdi4a"
- Name 413 "sizeQueryTemp"
- Name 424 "sizeQueryTemp"
- Name 427 "g_tTexcdu4a"
- Name 436 "sizeQueryTemp"
- Name 447 "sizeQueryTemp"
- Name 450 "g_tTex2dmsf4"
- Name 457 "NumberOfSamplesU"
- Name 460 "sizeQueryTemp"
- Name 463 "g_tTex2dmsi4"
- Name 472 "sizeQueryTemp"
- Name 475 "g_tTex2dmsu4"
- Name 484 "sizeQueryTemp"
- Name 487 "g_tTex2dmsf4a"
- Name 498 "sizeQueryTemp"
- Name 501 "g_tTex2dmsi4a"
- Name 512 "sizeQueryTemp"
- Name 515 "g_tTex2dmsu4a"
- Name 527 "psout"
+ Name 22 "WidthU"
+ Name 24 "sizeQueryTemp"
+ Name 29 "NumberOfLevelsU"
+ Name 32 "sizeQueryTemp"
+ Name 35 "g_tTex1di4"
+ Name 39 "sizeQueryTemp"
+ Name 45 "sizeQueryTemp"
+ Name 48 "g_tTex1du4"
+ Name 52 "sizeQueryTemp"
+ Name 60 "sizeQueryTemp"
+ Name 63 "g_tTex1df4a"
+ Name 70 "ElementsU"
+ Name 74 "sizeQueryTemp"
+ Name 83 "sizeQueryTemp"
+ Name 86 "g_tTex1di4a"
+ Name 93 "sizeQueryTemp"
+ Name 102 "sizeQueryTemp"
+ Name 105 "g_tTex1du4a"
+ Name 112 "sizeQueryTemp"
+ Name 121 "sizeQueryTemp"
+ Name 124 "g_tTex2df4"
+ Name 129 "HeightU"
+ Name 132 "sizeQueryTemp"
+ Name 141 "sizeQueryTemp"
+ Name 144 "g_tTex2di4"
+ Name 151 "sizeQueryTemp"
+ Name 160 "sizeQueryTemp"
+ Name 163 "g_tTex2du4"
+ Name 170 "sizeQueryTemp"
+ Name 181 "sizeQueryTemp"
+ Name 184 "g_tTex2df4a"
+ Name 195 "sizeQueryTemp"
+ Name 206 "sizeQueryTemp"
+ Name 209 "g_tTex2di4a"
+ Name 218 "sizeQueryTemp"
+ Name 229 "sizeQueryTemp"
+ Name 232 "g_tTex2du4a"
+ Name 241 "sizeQueryTemp"
+ Name 252 "sizeQueryTemp"
+ Name 255 "g_tTex3df4"
+ Name 262 "DepthU"
+ Name 265 "sizeQueryTemp"
+ Name 276 "sizeQueryTemp"
+ Name 279 "g_tTex3di4"
+ Name 288 "sizeQueryTemp"
+ Name 299 "sizeQueryTemp"
+ Name 302 "g_tTex3du4"
+ Name 311 "sizeQueryTemp"
+ Name 322 "sizeQueryTemp"
+ Name 325 "g_tTexcdf4"
+ Name 332 "sizeQueryTemp"
+ Name 341 "sizeQueryTemp"
+ Name 344 "g_tTexcdi4"
+ Name 351 "sizeQueryTemp"
+ Name 360 "sizeQueryTemp"
+ Name 363 "g_tTexcdu4"
+ Name 370 "sizeQueryTemp"
+ Name 379 "sizeQueryTemp"
+ Name 382 "g_tTexcdf4a"
+ Name 391 "sizeQueryTemp"
+ Name 402 "sizeQueryTemp"
+ Name 405 "g_tTexcdi4a"
+ Name 414 "sizeQueryTemp"
+ Name 425 "sizeQueryTemp"
+ Name 428 "g_tTexcdu4a"
+ Name 437 "sizeQueryTemp"
+ Name 448 "sizeQueryTemp"
+ Name 451 "g_tTex2dmsf4"
+ Name 458 "NumberOfSamplesU"
+ Name 461 "sizeQueryTemp"
+ Name 464 "g_tTex2dmsi4"
+ Name 473 "sizeQueryTemp"
+ Name 476 "g_tTex2dmsu4"
+ Name 485 "sizeQueryTemp"
+ Name 488 "g_tTex2dmsf4a"
+ Name 499 "sizeQueryTemp"
+ Name 502 "g_tTex2dmsi4a"
+ Name 513 "sizeQueryTemp"
+ Name 516 "g_tTex2dmsu4a"
+ Name 528 "psout"
Name 539 "flattenTemp"
Name 542 "Color"
Name 546 "Depth"
Name 551 "g_sSamp"
Decorate 17(g_tTex1df4) DescriptorSet 0
Decorate 17(g_tTex1df4) Binding 0
- Decorate 34(g_tTex1di4) DescriptorSet 0
- Decorate 47(g_tTex1du4) DescriptorSet 0
- Decorate 62(g_tTex1df4a) DescriptorSet 0
- Decorate 85(g_tTex1di4a) DescriptorSet 0
- Decorate 104(g_tTex1du4a) DescriptorSet 0
- Decorate 123(g_tTex2df4) DescriptorSet 0
- Decorate 143(g_tTex2di4) DescriptorSet 0
- Decorate 162(g_tTex2du4) DescriptorSet 0
- Decorate 183(g_tTex2df4a) DescriptorSet 0
- Decorate 208(g_tTex2di4a) DescriptorSet 0
- Decorate 231(g_tTex2du4a) DescriptorSet 0
- Decorate 254(g_tTex3df4) DescriptorSet 0
- Decorate 278(g_tTex3di4) DescriptorSet 0
- Decorate 301(g_tTex3du4) DescriptorSet 0
- Decorate 324(g_tTexcdf4) DescriptorSet 0
- Decorate 343(g_tTexcdi4) DescriptorSet 0
- Decorate 362(g_tTexcdu4) DescriptorSet 0
- Decorate 381(g_tTexcdf4a) DescriptorSet 0
- Decorate 404(g_tTexcdi4a) DescriptorSet 0
- Decorate 427(g_tTexcdu4a) DescriptorSet 0
- Decorate 450(g_tTex2dmsf4) DescriptorSet 0
- Decorate 463(g_tTex2dmsi4) DescriptorSet 0
- Decorate 475(g_tTex2dmsu4) DescriptorSet 0
- Decorate 487(g_tTex2dmsf4a) DescriptorSet 0
- Decorate 501(g_tTex2dmsi4a) DescriptorSet 0
- Decorate 515(g_tTex2dmsu4a) DescriptorSet 0
+ Decorate 35(g_tTex1di4) DescriptorSet 0
+ Decorate 48(g_tTex1du4) DescriptorSet 0
+ Decorate 63(g_tTex1df4a) DescriptorSet 0
+ Decorate 86(g_tTex1di4a) DescriptorSet 0
+ Decorate 105(g_tTex1du4a) DescriptorSet 0
+ Decorate 124(g_tTex2df4) DescriptorSet 0
+ Decorate 144(g_tTex2di4) DescriptorSet 0
+ Decorate 163(g_tTex2du4) DescriptorSet 0
+ Decorate 184(g_tTex2df4a) DescriptorSet 0
+ Decorate 209(g_tTex2di4a) DescriptorSet 0
+ Decorate 232(g_tTex2du4a) DescriptorSet 0
+ Decorate 255(g_tTex3df4) DescriptorSet 0
+ Decorate 279(g_tTex3di4) DescriptorSet 0
+ Decorate 302(g_tTex3du4) DescriptorSet 0
+ Decorate 325(g_tTexcdf4) DescriptorSet 0
+ Decorate 344(g_tTexcdi4) DescriptorSet 0
+ Decorate 363(g_tTexcdu4) DescriptorSet 0
+ Decorate 382(g_tTexcdf4a) DescriptorSet 0
+ Decorate 405(g_tTexcdi4a) DescriptorSet 0
+ Decorate 428(g_tTexcdu4a) DescriptorSet 0
+ Decorate 451(g_tTex2dmsf4) DescriptorSet 0
+ Decorate 464(g_tTex2dmsi4) DescriptorSet 0
+ Decorate 476(g_tTex2dmsu4) DescriptorSet 0
+ Decorate 488(g_tTex2dmsf4a) DescriptorSet 0
+ Decorate 502(g_tTex2dmsi4a) DescriptorSet 0
+ Decorate 516(g_tTex2dmsu4a) DescriptorSet 0
Decorate 542(Color) Location 0
Decorate 546(Depth) BuiltIn FragDepth
Decorate 551(g_sSamp) DescriptorSet 0
@@ -2379,96 +2463,96 @@
16: TypePointer UniformConstant 15
17(g_tTex1df4): 16(ptr) Variable UniformConstant
19: TypeInt 32 1
- 25: 12(int) Constant 6
- 32: TypeImage 19(int) 1D sampled format:Unknown
- 33: TypePointer UniformConstant 32
- 34(g_tTex1di4): 33(ptr) Variable UniformConstant
- 45: TypeImage 12(int) 1D sampled format:Unknown
- 46: TypePointer UniformConstant 45
- 47(g_tTex1du4): 46(ptr) Variable UniformConstant
- 57: TypeVector 12(int) 2
- 58: TypePointer Function 57(ivec2)
- 60: TypeImage 6(float) 1D array sampled format:Unknown
- 61: TypePointer UniformConstant 60
- 62(g_tTex1df4a): 61(ptr) Variable UniformConstant
- 64: TypeVector 19(int) 2
- 66: 12(int) Constant 0
- 70: 12(int) Constant 1
- 83: TypeImage 19(int) 1D array sampled format:Unknown
- 84: TypePointer UniformConstant 83
- 85(g_tTex1di4a): 84(ptr) Variable UniformConstant
- 102: TypeImage 12(int) 1D array sampled format:Unknown
- 103: TypePointer UniformConstant 102
-104(g_tTex1du4a): 103(ptr) Variable UniformConstant
- 121: TypeImage 6(float) 2D sampled format:Unknown
- 122: TypePointer UniformConstant 121
- 123(g_tTex2df4): 122(ptr) Variable UniformConstant
- 141: TypeImage 19(int) 2D sampled format:Unknown
- 142: TypePointer UniformConstant 141
- 143(g_tTex2di4): 142(ptr) Variable UniformConstant
- 160: TypeImage 12(int) 2D sampled format:Unknown
- 161: TypePointer UniformConstant 160
- 162(g_tTex2du4): 161(ptr) Variable UniformConstant
- 178: TypeVector 12(int) 3
- 179: TypePointer Function 178(ivec3)
- 181: TypeImage 6(float) 2D array sampled format:Unknown
- 182: TypePointer UniformConstant 181
-183(g_tTex2df4a): 182(ptr) Variable UniformConstant
- 185: TypeVector 19(int) 3
- 191: 12(int) Constant 2
- 206: TypeImage 19(int) 2D array sampled format:Unknown
- 207: TypePointer UniformConstant 206
-208(g_tTex2di4a): 207(ptr) Variable UniformConstant
- 229: TypeImage 12(int) 2D array sampled format:Unknown
- 230: TypePointer UniformConstant 229
-231(g_tTex2du4a): 230(ptr) Variable UniformConstant
- 252: TypeImage 6(float) 3D sampled format:Unknown
- 253: TypePointer UniformConstant 252
- 254(g_tTex3df4): 253(ptr) Variable UniformConstant
- 276: TypeImage 19(int) 3D sampled format:Unknown
- 277: TypePointer UniformConstant 276
- 278(g_tTex3di4): 277(ptr) Variable UniformConstant
- 299: TypeImage 12(int) 3D sampled format:Unknown
- 300: TypePointer UniformConstant 299
- 301(g_tTex3du4): 300(ptr) Variable UniformConstant
- 322: TypeImage 6(float) Cube sampled format:Unknown
- 323: TypePointer UniformConstant 322
- 324(g_tTexcdf4): 323(ptr) Variable UniformConstant
- 341: TypeImage 19(int) Cube sampled format:Unknown
- 342: TypePointer UniformConstant 341
- 343(g_tTexcdi4): 342(ptr) Variable UniformConstant
- 360: TypeImage 12(int) Cube sampled format:Unknown
- 361: TypePointer UniformConstant 360
- 362(g_tTexcdu4): 361(ptr) Variable UniformConstant
- 379: TypeImage 6(float) Cube array sampled format:Unknown
- 380: TypePointer UniformConstant 379
-381(g_tTexcdf4a): 380(ptr) Variable UniformConstant
- 402: TypeImage 19(int) Cube array sampled format:Unknown
- 403: TypePointer UniformConstant 402
-404(g_tTexcdi4a): 403(ptr) Variable UniformConstant
- 425: TypeImage 12(int) Cube array sampled format:Unknown
- 426: TypePointer UniformConstant 425
-427(g_tTexcdu4a): 426(ptr) Variable UniformConstant
- 448: TypeImage 6(float) 2D multi-sampled sampled format:Unknown
- 449: TypePointer UniformConstant 448
-450(g_tTex2dmsf4): 449(ptr) Variable UniformConstant
- 461: TypeImage 19(int) 2D multi-sampled sampled format:Unknown
- 462: TypePointer UniformConstant 461
-463(g_tTex2dmsi4): 462(ptr) Variable UniformConstant
- 473: TypeImage 12(int) 2D multi-sampled sampled format:Unknown
- 474: TypePointer UniformConstant 473
-475(g_tTex2dmsu4): 474(ptr) Variable UniformConstant
- 485: TypeImage 6(float) 2D array multi-sampled sampled format:Unknown
- 486: TypePointer UniformConstant 485
-487(g_tTex2dmsf4a): 486(ptr) Variable UniformConstant
- 499: TypeImage 19(int) 2D array multi-sampled sampled format:Unknown
- 500: TypePointer UniformConstant 499
-501(g_tTex2dmsi4a): 500(ptr) Variable UniformConstant
- 513: TypeImage 12(int) 2D array multi-sampled sampled format:Unknown
- 514: TypePointer UniformConstant 513
-515(g_tTex2dmsu4a): 514(ptr) Variable UniformConstant
- 526: TypePointer Function 8(PS_OUTPUT)
- 528: 19(int) Constant 0
+ 20: 19(int) Constant 0
+ 26: 12(int) Constant 6
+ 33: TypeImage 19(int) 1D sampled format:Unknown
+ 34: TypePointer UniformConstant 33
+ 35(g_tTex1di4): 34(ptr) Variable UniformConstant
+ 46: TypeImage 12(int) 1D sampled format:Unknown
+ 47: TypePointer UniformConstant 46
+ 48(g_tTex1du4): 47(ptr) Variable UniformConstant
+ 58: TypeVector 12(int) 2
+ 59: TypePointer Function 58(ivec2)
+ 61: TypeImage 6(float) 1D array sampled format:Unknown
+ 62: TypePointer UniformConstant 61
+ 63(g_tTex1df4a): 62(ptr) Variable UniformConstant
+ 65: TypeVector 19(int) 2
+ 67: 12(int) Constant 0
+ 71: 12(int) Constant 1
+ 84: TypeImage 19(int) 1D array sampled format:Unknown
+ 85: TypePointer UniformConstant 84
+ 86(g_tTex1di4a): 85(ptr) Variable UniformConstant
+ 103: TypeImage 12(int) 1D array sampled format:Unknown
+ 104: TypePointer UniformConstant 103
+105(g_tTex1du4a): 104(ptr) Variable UniformConstant
+ 122: TypeImage 6(float) 2D sampled format:Unknown
+ 123: TypePointer UniformConstant 122
+ 124(g_tTex2df4): 123(ptr) Variable UniformConstant
+ 142: TypeImage 19(int) 2D sampled format:Unknown
+ 143: TypePointer UniformConstant 142
+ 144(g_tTex2di4): 143(ptr) Variable UniformConstant
+ 161: TypeImage 12(int) 2D sampled format:Unknown
+ 162: TypePointer UniformConstant 161
+ 163(g_tTex2du4): 162(ptr) Variable UniformConstant
+ 179: TypeVector 12(int) 3
+ 180: TypePointer Function 179(ivec3)
+ 182: TypeImage 6(float) 2D array sampled format:Unknown
+ 183: TypePointer UniformConstant 182
+184(g_tTex2df4a): 183(ptr) Variable UniformConstant
+ 186: TypeVector 19(int) 3
+ 192: 12(int) Constant 2
+ 207: TypeImage 19(int) 2D array sampled format:Unknown
+ 208: TypePointer UniformConstant 207
+209(g_tTex2di4a): 208(ptr) Variable UniformConstant
+ 230: TypeImage 12(int) 2D array sampled format:Unknown
+ 231: TypePointer UniformConstant 230
+232(g_tTex2du4a): 231(ptr) Variable UniformConstant
+ 253: TypeImage 6(float) 3D sampled format:Unknown
+ 254: TypePointer UniformConstant 253
+ 255(g_tTex3df4): 254(ptr) Variable UniformConstant
+ 277: TypeImage 19(int) 3D sampled format:Unknown
+ 278: TypePointer UniformConstant 277
+ 279(g_tTex3di4): 278(ptr) Variable UniformConstant
+ 300: TypeImage 12(int) 3D sampled format:Unknown
+ 301: TypePointer UniformConstant 300
+ 302(g_tTex3du4): 301(ptr) Variable UniformConstant
+ 323: TypeImage 6(float) Cube sampled format:Unknown
+ 324: TypePointer UniformConstant 323
+ 325(g_tTexcdf4): 324(ptr) Variable UniformConstant
+ 342: TypeImage 19(int) Cube sampled format:Unknown
+ 343: TypePointer UniformConstant 342
+ 344(g_tTexcdi4): 343(ptr) Variable UniformConstant
+ 361: TypeImage 12(int) Cube sampled format:Unknown
+ 362: TypePointer UniformConstant 361
+ 363(g_tTexcdu4): 362(ptr) Variable UniformConstant
+ 380: TypeImage 6(float) Cube array sampled format:Unknown
+ 381: TypePointer UniformConstant 380
+382(g_tTexcdf4a): 381(ptr) Variable UniformConstant
+ 403: TypeImage 19(int) Cube array sampled format:Unknown
+ 404: TypePointer UniformConstant 403
+405(g_tTexcdi4a): 404(ptr) Variable UniformConstant
+ 426: TypeImage 12(int) Cube array sampled format:Unknown
+ 427: TypePointer UniformConstant 426
+428(g_tTexcdu4a): 427(ptr) Variable UniformConstant
+ 449: TypeImage 6(float) 2D multi-sampled sampled format:Unknown
+ 450: TypePointer UniformConstant 449
+451(g_tTex2dmsf4): 450(ptr) Variable UniformConstant
+ 462: TypeImage 19(int) 2D multi-sampled sampled format:Unknown
+ 463: TypePointer UniformConstant 462
+464(g_tTex2dmsi4): 463(ptr) Variable UniformConstant
+ 474: TypeImage 12(int) 2D multi-sampled sampled format:Unknown
+ 475: TypePointer UniformConstant 474
+476(g_tTex2dmsu4): 475(ptr) Variable UniformConstant
+ 486: TypeImage 6(float) 2D array multi-sampled sampled format:Unknown
+ 487: TypePointer UniformConstant 486
+488(g_tTex2dmsf4a): 487(ptr) Variable UniformConstant
+ 500: TypeImage 19(int) 2D array multi-sampled sampled format:Unknown
+ 501: TypePointer UniformConstant 500
+502(g_tTex2dmsi4a): 501(ptr) Variable UniformConstant
+ 514: TypeImage 12(int) 2D array multi-sampled sampled format:Unknown
+ 515: TypePointer UniformConstant 514
+516(g_tTex2dmsu4a): 515(ptr) Variable UniformConstant
+ 527: TypePointer Function 8(PS_OUTPUT)
529: 6(float) Constant 1065353216
530: 7(fvec4) ConstantComposite 529 529 529 529
531: TypePointer Function 7(fvec4)
@@ -2483,10 +2567,10 @@
551(g_sSamp): 550(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
-539(flattenTemp): 526(ptr) Variable Function
+539(flattenTemp): 527(ptr) Variable Function
540:8(PS_OUTPUT) FunctionCall 10(@main()
Store 539(flattenTemp) 540
- 543: 531(ptr) AccessChain 539(flattenTemp) 528
+ 543: 531(ptr) AccessChain 539(flattenTemp) 20
544: 7(fvec4) Load 543
Store 542(Color) 544
547: 534(ptr) AccessChain 539(flattenTemp) 533
@@ -2497,616 +2581,616 @@
10(@main():8(PS_OUTPUT) Function None 9
11: Label
14(sizeQueryTemp): 13(ptr) Variable Function
- 21(WidthU): 13(ptr) Variable Function
-23(sizeQueryTemp): 13(ptr) Variable Function
-28(NumberOfLevelsU): 13(ptr) Variable Function
-31(sizeQueryTemp): 13(ptr) Variable Function
-38(sizeQueryTemp): 13(ptr) Variable Function
-44(sizeQueryTemp): 13(ptr) Variable Function
-51(sizeQueryTemp): 13(ptr) Variable Function
-59(sizeQueryTemp): 58(ptr) Variable Function
- 69(ElementsU): 13(ptr) Variable Function
-73(sizeQueryTemp): 58(ptr) Variable Function
-82(sizeQueryTemp): 58(ptr) Variable Function
-92(sizeQueryTemp): 58(ptr) Variable Function
-101(sizeQueryTemp): 58(ptr) Variable Function
-111(sizeQueryTemp): 58(ptr) Variable Function
-120(sizeQueryTemp): 58(ptr) Variable Function
- 128(HeightU): 13(ptr) Variable Function
-131(sizeQueryTemp): 58(ptr) Variable Function
-140(sizeQueryTemp): 58(ptr) Variable Function
-150(sizeQueryTemp): 58(ptr) Variable Function
-159(sizeQueryTemp): 58(ptr) Variable Function
-169(sizeQueryTemp): 58(ptr) Variable Function
-180(sizeQueryTemp): 179(ptr) Variable Function
-194(sizeQueryTemp): 179(ptr) Variable Function
-205(sizeQueryTemp): 179(ptr) Variable Function
-217(sizeQueryTemp): 179(ptr) Variable Function
-228(sizeQueryTemp): 179(ptr) Variable Function
-240(sizeQueryTemp): 179(ptr) Variable Function
-251(sizeQueryTemp): 179(ptr) Variable Function
- 261(DepthU): 13(ptr) Variable Function
-264(sizeQueryTemp): 179(ptr) Variable Function
-275(sizeQueryTemp): 179(ptr) Variable Function
-287(sizeQueryTemp): 179(ptr) Variable Function
-298(sizeQueryTemp): 179(ptr) Variable Function
-310(sizeQueryTemp): 179(ptr) Variable Function
-321(sizeQueryTemp): 58(ptr) Variable Function
-331(sizeQueryTemp): 58(ptr) Variable Function
-340(sizeQueryTemp): 58(ptr) Variable Function
-350(sizeQueryTemp): 58(ptr) Variable Function
-359(sizeQueryTemp): 58(ptr) Variable Function
-369(sizeQueryTemp): 58(ptr) Variable Function
-378(sizeQueryTemp): 179(ptr) Variable Function
-390(sizeQueryTemp): 179(ptr) Variable Function
-401(sizeQueryTemp): 179(ptr) Variable Function
-413(sizeQueryTemp): 179(ptr) Variable Function
-424(sizeQueryTemp): 179(ptr) Variable Function
-436(sizeQueryTemp): 179(ptr) Variable Function
-447(sizeQueryTemp): 58(ptr) Variable Function
-457(NumberOfSamplesU): 13(ptr) Variable Function
-460(sizeQueryTemp): 58(ptr) Variable Function
-472(sizeQueryTemp): 58(ptr) Variable Function
-484(sizeQueryTemp): 179(ptr) Variable Function
-498(sizeQueryTemp): 179(ptr) Variable Function
-512(sizeQueryTemp): 179(ptr) Variable Function
- 527(psout): 526(ptr) Variable Function
+ 22(WidthU): 13(ptr) Variable Function
+24(sizeQueryTemp): 13(ptr) Variable Function
+29(NumberOfLevelsU): 13(ptr) Variable Function
+32(sizeQueryTemp): 13(ptr) Variable Function
+39(sizeQueryTemp): 13(ptr) Variable Function
+45(sizeQueryTemp): 13(ptr) Variable Function
+52(sizeQueryTemp): 13(ptr) Variable Function
+60(sizeQueryTemp): 59(ptr) Variable Function
+ 70(ElementsU): 13(ptr) Variable Function
+74(sizeQueryTemp): 59(ptr) Variable Function
+83(sizeQueryTemp): 59(ptr) Variable Function
+93(sizeQueryTemp): 59(ptr) Variable Function
+102(sizeQueryTemp): 59(ptr) Variable Function
+112(sizeQueryTemp): 59(ptr) Variable Function
+121(sizeQueryTemp): 59(ptr) Variable Function
+ 129(HeightU): 13(ptr) Variable Function
+132(sizeQueryTemp): 59(ptr) Variable Function
+141(sizeQueryTemp): 59(ptr) Variable Function
+151(sizeQueryTemp): 59(ptr) Variable Function
+160(sizeQueryTemp): 59(ptr) Variable Function
+170(sizeQueryTemp): 59(ptr) Variable Function
+181(sizeQueryTemp): 180(ptr) Variable Function
+195(sizeQueryTemp): 180(ptr) Variable Function
+206(sizeQueryTemp): 180(ptr) Variable Function
+218(sizeQueryTemp): 180(ptr) Variable Function
+229(sizeQueryTemp): 180(ptr) Variable Function
+241(sizeQueryTemp): 180(ptr) Variable Function
+252(sizeQueryTemp): 180(ptr) Variable Function
+ 262(DepthU): 13(ptr) Variable Function
+265(sizeQueryTemp): 180(ptr) Variable Function
+276(sizeQueryTemp): 180(ptr) Variable Function
+288(sizeQueryTemp): 180(ptr) Variable Function
+299(sizeQueryTemp): 180(ptr) Variable Function
+311(sizeQueryTemp): 180(ptr) Variable Function
+322(sizeQueryTemp): 59(ptr) Variable Function
+332(sizeQueryTemp): 59(ptr) Variable Function
+341(sizeQueryTemp): 59(ptr) Variable Function
+351(sizeQueryTemp): 59(ptr) Variable Function
+360(sizeQueryTemp): 59(ptr) Variable Function
+370(sizeQueryTemp): 59(ptr) Variable Function
+379(sizeQueryTemp): 180(ptr) Variable Function
+391(sizeQueryTemp): 180(ptr) Variable Function
+402(sizeQueryTemp): 180(ptr) Variable Function
+414(sizeQueryTemp): 180(ptr) Variable Function
+425(sizeQueryTemp): 180(ptr) Variable Function
+437(sizeQueryTemp): 180(ptr) Variable Function
+448(sizeQueryTemp): 59(ptr) Variable Function
+458(NumberOfSamplesU): 13(ptr) Variable Function
+461(sizeQueryTemp): 59(ptr) Variable Function
+473(sizeQueryTemp): 59(ptr) Variable Function
+485(sizeQueryTemp): 180(ptr) Variable Function
+499(sizeQueryTemp): 180(ptr) Variable Function
+513(sizeQueryTemp): 180(ptr) Variable Function
+ 528(psout): 527(ptr) Variable Function
18: 15 Load 17(g_tTex1df4)
- 20: 19(int) ImageQuerySize 18
- Store 14(sizeQueryTemp) 20
- 22: 12(int) Load 14(sizeQueryTemp)
- Store 21(WidthU) 22
- 24: 15 Load 17(g_tTex1df4)
- 26: 19(int) ImageQuerySizeLod 24 25
- Store 23(sizeQueryTemp) 26
- 27: 12(int) Load 23(sizeQueryTemp)
- Store 21(WidthU) 27
- 29: 15 Load 17(g_tTex1df4)
- 30: 19(int) ImageQueryLevels 29
- Store 28(NumberOfLevelsU) 30
- 35: 32 Load 34(g_tTex1di4)
- 36: 19(int) ImageQuerySize 35
- Store 31(sizeQueryTemp) 36
- 37: 12(int) Load 31(sizeQueryTemp)
- Store 21(WidthU) 37
- 39: 32 Load 34(g_tTex1di4)
- 40: 19(int) ImageQuerySizeLod 39 25
- Store 38(sizeQueryTemp) 40
- 41: 12(int) Load 38(sizeQueryTemp)
- Store 21(WidthU) 41
- 42: 32 Load 34(g_tTex1di4)
- 43: 19(int) ImageQueryLevels 42
- Store 28(NumberOfLevelsU) 43
- 48: 45 Load 47(g_tTex1du4)
- 49: 19(int) ImageQuerySize 48
- Store 44(sizeQueryTemp) 49
- 50: 12(int) Load 44(sizeQueryTemp)
- Store 21(WidthU) 50
- 52: 45 Load 47(g_tTex1du4)
- 53: 19(int) ImageQuerySizeLod 52 25
- Store 51(sizeQueryTemp) 53
- 54: 12(int) Load 51(sizeQueryTemp)
- Store 21(WidthU) 54
- 55: 45 Load 47(g_tTex1du4)
- 56: 19(int) ImageQueryLevels 55
- Store 28(NumberOfLevelsU) 56
- 63: 60 Load 62(g_tTex1df4a)
- 65: 64(ivec2) ImageQuerySize 63
- Store 59(sizeQueryTemp) 65
- 67: 13(ptr) AccessChain 59(sizeQueryTemp) 66
- 68: 12(int) Load 67
- Store 21(WidthU) 68
- 71: 13(ptr) AccessChain 59(sizeQueryTemp) 70
- 72: 12(int) Load 71
- Store 69(ElementsU) 72
- 74: 60 Load 62(g_tTex1df4a)
- 75: 64(ivec2) ImageQuerySizeLod 74 25
- Store 73(sizeQueryTemp) 75
- 76: 13(ptr) AccessChain 73(sizeQueryTemp) 66
- 77: 12(int) Load 76
- Store 21(WidthU) 77
- 78: 13(ptr) AccessChain 73(sizeQueryTemp) 70
- 79: 12(int) Load 78
- Store 69(ElementsU) 79
- 80: 60 Load 62(g_tTex1df4a)
- 81: 19(int) ImageQueryLevels 80
- Store 28(NumberOfLevelsU) 81
- 86: 83 Load 85(g_tTex1di4a)
- 87: 64(ivec2) ImageQuerySize 86
- Store 82(sizeQueryTemp) 87
- 88: 13(ptr) AccessChain 82(sizeQueryTemp) 66
- 89: 12(int) Load 88
- Store 21(WidthU) 89
- 90: 13(ptr) AccessChain 82(sizeQueryTemp) 70
- 91: 12(int) Load 90
- Store 69(ElementsU) 91
- 93: 83 Load 85(g_tTex1di4a)
- 94: 64(ivec2) ImageQuerySizeLod 93 25
- Store 92(sizeQueryTemp) 94
- 95: 13(ptr) AccessChain 92(sizeQueryTemp) 66
- 96: 12(int) Load 95
- Store 21(WidthU) 96
- 97: 13(ptr) AccessChain 92(sizeQueryTemp) 70
- 98: 12(int) Load 97
- Store 69(ElementsU) 98
- 99: 83 Load 85(g_tTex1di4a)
- 100: 19(int) ImageQueryLevels 99
- Store 28(NumberOfLevelsU) 100
- 105: 102 Load 104(g_tTex1du4a)
- 106: 64(ivec2) ImageQuerySize 105
- Store 101(sizeQueryTemp) 106
- 107: 13(ptr) AccessChain 101(sizeQueryTemp) 66
- 108: 12(int) Load 107
- Store 21(WidthU) 108
- 109: 13(ptr) AccessChain 101(sizeQueryTemp) 70
- 110: 12(int) Load 109
- Store 69(ElementsU) 110
- 112: 102 Load 104(g_tTex1du4a)
- 113: 64(ivec2) ImageQuerySizeLod 112 25
- Store 111(sizeQueryTemp) 113
- 114: 13(ptr) AccessChain 111(sizeQueryTemp) 66
- 115: 12(int) Load 114
- Store 21(WidthU) 115
- 116: 13(ptr) AccessChain 111(sizeQueryTemp) 70
- 117: 12(int) Load 116
- Store 69(ElementsU) 117
- 118: 102 Load 104(g_tTex1du4a)
- 119: 19(int) ImageQueryLevels 118
- Store 28(NumberOfLevelsU) 119
- 124: 121 Load 123(g_tTex2df4)
- 125: 64(ivec2) ImageQuerySize 124
- Store 120(sizeQueryTemp) 125
- 126: 13(ptr) AccessChain 120(sizeQueryTemp) 66
- 127: 12(int) Load 126
- Store 21(WidthU) 127
- 129: 13(ptr) AccessChain 120(sizeQueryTemp) 70
- 130: 12(int) Load 129
- Store 128(HeightU) 130
- 132: 121 Load 123(g_tTex2df4)
- 133: 64(ivec2) ImageQuerySizeLod 132 25
- Store 131(sizeQueryTemp) 133
- 134: 13(ptr) AccessChain 131(sizeQueryTemp) 66
- 135: 12(int) Load 134
- Store 21(WidthU) 135
- 136: 13(ptr) AccessChain 131(sizeQueryTemp) 70
- 137: 12(int) Load 136
- Store 128(HeightU) 137
- 138: 121 Load 123(g_tTex2df4)
- 139: 19(int) ImageQueryLevels 138
- Store 28(NumberOfLevelsU) 139
- 144: 141 Load 143(g_tTex2di4)
- 145: 64(ivec2) ImageQuerySize 144
- Store 140(sizeQueryTemp) 145
- 146: 13(ptr) AccessChain 140(sizeQueryTemp) 66
- 147: 12(int) Load 146
- Store 21(WidthU) 147
- 148: 13(ptr) AccessChain 140(sizeQueryTemp) 70
- 149: 12(int) Load 148
- Store 128(HeightU) 149
- 151: 141 Load 143(g_tTex2di4)
- 152: 64(ivec2) ImageQuerySizeLod 151 25
- Store 150(sizeQueryTemp) 152
- 153: 13(ptr) AccessChain 150(sizeQueryTemp) 66
- 154: 12(int) Load 153
- Store 21(WidthU) 154
- 155: 13(ptr) AccessChain 150(sizeQueryTemp) 70
- 156: 12(int) Load 155
- Store 128(HeightU) 156
- 157: 141 Load 143(g_tTex2di4)
- 158: 19(int) ImageQueryLevels 157
- Store 28(NumberOfLevelsU) 158
- 163: 160 Load 162(g_tTex2du4)
- 164: 64(ivec2) ImageQuerySize 163
- Store 159(sizeQueryTemp) 164
- 165: 13(ptr) AccessChain 159(sizeQueryTemp) 66
- 166: 12(int) Load 165
- Store 21(WidthU) 166
- 167: 13(ptr) AccessChain 159(sizeQueryTemp) 70
- 168: 12(int) Load 167
- Store 128(HeightU) 168
- 170: 160 Load 162(g_tTex2du4)
- 171: 64(ivec2) ImageQuerySizeLod 170 25
- Store 169(sizeQueryTemp) 171
- 172: 13(ptr) AccessChain 169(sizeQueryTemp) 66
- 173: 12(int) Load 172
- Store 21(WidthU) 173
- 174: 13(ptr) AccessChain 169(sizeQueryTemp) 70
- 175: 12(int) Load 174
- Store 128(HeightU) 175
- 176: 160 Load 162(g_tTex2du4)
- 177: 19(int) ImageQueryLevels 176
- Store 28(NumberOfLevelsU) 177
- 184: 181 Load 183(g_tTex2df4a)
- 186: 185(ivec3) ImageQuerySize 184
- Store 180(sizeQueryTemp) 186
- 187: 13(ptr) AccessChain 180(sizeQueryTemp) 66
- 188: 12(int) Load 187
- Store 21(WidthU) 188
- 189: 13(ptr) AccessChain 180(sizeQueryTemp) 70
- 190: 12(int) Load 189
- Store 128(HeightU) 190
- 192: 13(ptr) AccessChain 180(sizeQueryTemp) 191
- 193: 12(int) Load 192
- Store 69(ElementsU) 193
- 195: 181 Load 183(g_tTex2df4a)
- 196: 185(ivec3) ImageQuerySizeLod 195 25
- Store 194(sizeQueryTemp) 196
- 197: 13(ptr) AccessChain 194(sizeQueryTemp) 66
- 198: 12(int) Load 197
- Store 21(WidthU) 198
- 199: 13(ptr) AccessChain 194(sizeQueryTemp) 70
- 200: 12(int) Load 199
- Store 128(HeightU) 200
- 201: 13(ptr) AccessChain 194(sizeQueryTemp) 191
- 202: 12(int) Load 201
- Store 69(ElementsU) 202
- 203: 181 Load 183(g_tTex2df4a)
- 204: 19(int) ImageQueryLevels 203
- Store 28(NumberOfLevelsU) 204
- 209: 206 Load 208(g_tTex2di4a)
- 210: 185(ivec3) ImageQuerySize 209
- Store 205(sizeQueryTemp) 210
- 211: 13(ptr) AccessChain 205(sizeQueryTemp) 66
- 212: 12(int) Load 211
- Store 21(WidthU) 212
- 213: 13(ptr) AccessChain 205(sizeQueryTemp) 70
- 214: 12(int) Load 213
- Store 128(HeightU) 214
- 215: 13(ptr) AccessChain 205(sizeQueryTemp) 191
- 216: 12(int) Load 215
- Store 69(ElementsU) 216
- 218: 206 Load 208(g_tTex2di4a)
- 219: 185(ivec3) ImageQuerySizeLod 218 25
- Store 217(sizeQueryTemp) 219
- 220: 13(ptr) AccessChain 217(sizeQueryTemp) 66
- 221: 12(int) Load 220
- Store 21(WidthU) 221
- 222: 13(ptr) AccessChain 217(sizeQueryTemp) 70
- 223: 12(int) Load 222
- Store 128(HeightU) 223
- 224: 13(ptr) AccessChain 217(sizeQueryTemp) 191
- 225: 12(int) Load 224
- Store 69(ElementsU) 225
- 226: 206 Load 208(g_tTex2di4a)
- 227: 19(int) ImageQueryLevels 226
- Store 28(NumberOfLevelsU) 227
- 232: 229 Load 231(g_tTex2du4a)
- 233: 185(ivec3) ImageQuerySize 232
- Store 228(sizeQueryTemp) 233
- 234: 13(ptr) AccessChain 228(sizeQueryTemp) 66
- 235: 12(int) Load 234
- Store 21(WidthU) 235
- 236: 13(ptr) AccessChain 228(sizeQueryTemp) 70
- 237: 12(int) Load 236
- Store 128(HeightU) 237
- 238: 13(ptr) AccessChain 228(sizeQueryTemp) 191
- 239: 12(int) Load 238
- Store 69(ElementsU) 239
- 241: 229 Load 231(g_tTex2du4a)
- 242: 185(ivec3) ImageQuerySizeLod 241 25
- Store 240(sizeQueryTemp) 242
- 243: 13(ptr) AccessChain 240(sizeQueryTemp) 66
- 244: 12(int) Load 243
- Store 21(WidthU) 244
- 245: 13(ptr) AccessChain 240(sizeQueryTemp) 70
- 246: 12(int) Load 245
- Store 128(HeightU) 246
- 247: 13(ptr) AccessChain 240(sizeQueryTemp) 191
- 248: 12(int) Load 247
- Store 69(ElementsU) 248
- 249: 229 Load 231(g_tTex2du4a)
- 250: 19(int) ImageQueryLevels 249
- Store 28(NumberOfLevelsU) 250
- 255: 252 Load 254(g_tTex3df4)
- 256: 185(ivec3) ImageQuerySize 255
- Store 251(sizeQueryTemp) 256
- 257: 13(ptr) AccessChain 251(sizeQueryTemp) 66
- 258: 12(int) Load 257
- Store 21(WidthU) 258
- 259: 13(ptr) AccessChain 251(sizeQueryTemp) 70
- 260: 12(int) Load 259
- Store 128(HeightU) 260
- 262: 13(ptr) AccessChain 251(sizeQueryTemp) 191
- 263: 12(int) Load 262
- Store 261(DepthU) 263
- 265: 252 Load 254(g_tTex3df4)
- 266: 185(ivec3) ImageQuerySizeLod 265 25
- Store 264(sizeQueryTemp) 266
- 267: 13(ptr) AccessChain 264(sizeQueryTemp) 66
- 268: 12(int) Load 267
- Store 21(WidthU) 268
- 269: 13(ptr) AccessChain 264(sizeQueryTemp) 70
- 270: 12(int) Load 269
- Store 128(HeightU) 270
- 271: 13(ptr) AccessChain 264(sizeQueryTemp) 191
- 272: 12(int) Load 271
- Store 261(DepthU) 272
- 273: 252 Load 254(g_tTex3df4)
- 274: 19(int) ImageQueryLevels 273
- Store 28(NumberOfLevelsU) 274
- 279: 276 Load 278(g_tTex3di4)
- 280: 185(ivec3) ImageQuerySize 279
- Store 275(sizeQueryTemp) 280
- 281: 13(ptr) AccessChain 275(sizeQueryTemp) 66
- 282: 12(int) Load 281
- Store 21(WidthU) 282
- 283: 13(ptr) AccessChain 275(sizeQueryTemp) 70
- 284: 12(int) Load 283
- Store 128(HeightU) 284
- 285: 13(ptr) AccessChain 275(sizeQueryTemp) 191
- 286: 12(int) Load 285
- Store 261(DepthU) 286
- 288: 276 Load 278(g_tTex3di4)
- 289: 185(ivec3) ImageQuerySizeLod 288 25
- Store 287(sizeQueryTemp) 289
- 290: 13(ptr) AccessChain 287(sizeQueryTemp) 66
- 291: 12(int) Load 290
- Store 21(WidthU) 291
- 292: 13(ptr) AccessChain 287(sizeQueryTemp) 70
- 293: 12(int) Load 292
- Store 128(HeightU) 293
- 294: 13(ptr) AccessChain 287(sizeQueryTemp) 191
- 295: 12(int) Load 294
- Store 261(DepthU) 295
- 296: 276 Load 278(g_tTex3di4)
- 297: 19(int) ImageQueryLevels 296
- Store 28(NumberOfLevelsU) 297
- 302: 299 Load 301(g_tTex3du4)
- 303: 185(ivec3) ImageQuerySize 302
- Store 298(sizeQueryTemp) 303
- 304: 13(ptr) AccessChain 298(sizeQueryTemp) 66
- 305: 12(int) Load 304
- Store 21(WidthU) 305
- 306: 13(ptr) AccessChain 298(sizeQueryTemp) 70
- 307: 12(int) Load 306
- Store 128(HeightU) 307
- 308: 13(ptr) AccessChain 298(sizeQueryTemp) 191
- 309: 12(int) Load 308
- Store 261(DepthU) 309
- 311: 299 Load 301(g_tTex3du4)
- 312: 185(ivec3) ImageQuerySizeLod 311 25
- Store 310(sizeQueryTemp) 312
- 313: 13(ptr) AccessChain 310(sizeQueryTemp) 66
- 314: 12(int) Load 313
- Store 21(WidthU) 314
- 315: 13(ptr) AccessChain 310(sizeQueryTemp) 70
- 316: 12(int) Load 315
- Store 128(HeightU) 316
- 317: 13(ptr) AccessChain 310(sizeQueryTemp) 191
- 318: 12(int) Load 317
- Store 261(DepthU) 318
- 319: 299 Load 301(g_tTex3du4)
- 320: 19(int) ImageQueryLevels 319
- Store 28(NumberOfLevelsU) 320
- 325: 322 Load 324(g_tTexcdf4)
- 326: 64(ivec2) ImageQuerySize 325
- Store 321(sizeQueryTemp) 326
- 327: 13(ptr) AccessChain 321(sizeQueryTemp) 66
- 328: 12(int) Load 327
- Store 21(WidthU) 328
- 329: 13(ptr) AccessChain 321(sizeQueryTemp) 70
- 330: 12(int) Load 329
- Store 128(HeightU) 330
- 332: 322 Load 324(g_tTexcdf4)
- 333: 64(ivec2) ImageQuerySizeLod 332 25
- Store 331(sizeQueryTemp) 333
- 334: 13(ptr) AccessChain 331(sizeQueryTemp) 66
- 335: 12(int) Load 334
- Store 21(WidthU) 335
- 336: 13(ptr) AccessChain 331(sizeQueryTemp) 70
- 337: 12(int) Load 336
- Store 128(HeightU) 337
- 338: 322 Load 324(g_tTexcdf4)
- 339: 19(int) ImageQueryLevels 338
- Store 28(NumberOfLevelsU) 339
- 344: 341 Load 343(g_tTexcdi4)
- 345: 64(ivec2) ImageQuerySize 344
- Store 340(sizeQueryTemp) 345
- 346: 13(ptr) AccessChain 340(sizeQueryTemp) 66
- 347: 12(int) Load 346
- Store 21(WidthU) 347
- 348: 13(ptr) AccessChain 340(sizeQueryTemp) 70
- 349: 12(int) Load 348
- Store 128(HeightU) 349
- 351: 341 Load 343(g_tTexcdi4)
- 352: 64(ivec2) ImageQuerySizeLod 351 25
- Store 350(sizeQueryTemp) 352
- 353: 13(ptr) AccessChain 350(sizeQueryTemp) 66
- 354: 12(int) Load 353
- Store 21(WidthU) 354
- 355: 13(ptr) AccessChain 350(sizeQueryTemp) 70
- 356: 12(int) Load 355
- Store 128(HeightU) 356
- 357: 341 Load 343(g_tTexcdi4)
- 358: 19(int) ImageQueryLevels 357
- Store 28(NumberOfLevelsU) 358
- 363: 360 Load 362(g_tTexcdu4)
- 364: 64(ivec2) ImageQuerySize 363
- Store 359(sizeQueryTemp) 364
- 365: 13(ptr) AccessChain 359(sizeQueryTemp) 66
- 366: 12(int) Load 365
- Store 21(WidthU) 366
- 367: 13(ptr) AccessChain 359(sizeQueryTemp) 70
- 368: 12(int) Load 367
- Store 128(HeightU) 368
- 370: 360 Load 362(g_tTexcdu4)
- 371: 64(ivec2) ImageQuerySizeLod 370 25
- Store 369(sizeQueryTemp) 371
- 372: 13(ptr) AccessChain 369(sizeQueryTemp) 66
- 373: 12(int) Load 372
- Store 21(WidthU) 373
- 374: 13(ptr) AccessChain 369(sizeQueryTemp) 70
- 375: 12(int) Load 374
- Store 128(HeightU) 375
- 376: 360 Load 362(g_tTexcdu4)
- 377: 19(int) ImageQueryLevels 376
- Store 28(NumberOfLevelsU) 377
- 382: 379 Load 381(g_tTexcdf4a)
- 383: 185(ivec3) ImageQuerySize 382
- Store 378(sizeQueryTemp) 383
- 384: 13(ptr) AccessChain 378(sizeQueryTemp) 66
- 385: 12(int) Load 384
- Store 21(WidthU) 385
- 386: 13(ptr) AccessChain 378(sizeQueryTemp) 70
- 387: 12(int) Load 386
- Store 128(HeightU) 387
- 388: 13(ptr) AccessChain 378(sizeQueryTemp) 191
- 389: 12(int) Load 388
- Store 69(ElementsU) 389
- 391: 379 Load 381(g_tTexcdf4a)
- 392: 185(ivec3) ImageQuerySizeLod 391 25
- Store 390(sizeQueryTemp) 392
- 393: 13(ptr) AccessChain 390(sizeQueryTemp) 66
- 394: 12(int) Load 393
- Store 21(WidthU) 394
- 395: 13(ptr) AccessChain 390(sizeQueryTemp) 70
- 396: 12(int) Load 395
- Store 128(HeightU) 396
- 397: 13(ptr) AccessChain 390(sizeQueryTemp) 191
- 398: 12(int) Load 397
- Store 69(ElementsU) 398
- 399: 379 Load 381(g_tTexcdf4a)
- 400: 19(int) ImageQueryLevels 399
- Store 28(NumberOfLevelsU) 400
- 405: 402 Load 404(g_tTexcdi4a)
- 406: 185(ivec3) ImageQuerySize 405
- Store 401(sizeQueryTemp) 406
- 407: 13(ptr) AccessChain 401(sizeQueryTemp) 66
- 408: 12(int) Load 407
- Store 21(WidthU) 408
- 409: 13(ptr) AccessChain 401(sizeQueryTemp) 70
- 410: 12(int) Load 409
- Store 128(HeightU) 410
- 411: 13(ptr) AccessChain 401(sizeQueryTemp) 191
- 412: 12(int) Load 411
- Store 69(ElementsU) 412
- 414: 402 Load 404(g_tTexcdi4a)
- 415: 185(ivec3) ImageQuerySizeLod 414 25
- Store 413(sizeQueryTemp) 415
- 416: 13(ptr) AccessChain 413(sizeQueryTemp) 66
- 417: 12(int) Load 416
- Store 21(WidthU) 417
- 418: 13(ptr) AccessChain 413(sizeQueryTemp) 70
- 419: 12(int) Load 418
- Store 128(HeightU) 419
- 420: 13(ptr) AccessChain 413(sizeQueryTemp) 191
- 421: 12(int) Load 420
- Store 69(ElementsU) 421
- 422: 402 Load 404(g_tTexcdi4a)
- 423: 19(int) ImageQueryLevels 422
- Store 28(NumberOfLevelsU) 423
- 428: 425 Load 427(g_tTexcdu4a)
- 429: 185(ivec3) ImageQuerySize 428
- Store 424(sizeQueryTemp) 429
- 430: 13(ptr) AccessChain 424(sizeQueryTemp) 66
- 431: 12(int) Load 430
- Store 21(WidthU) 431
- 432: 13(ptr) AccessChain 424(sizeQueryTemp) 70
- 433: 12(int) Load 432
- Store 128(HeightU) 433
- 434: 13(ptr) AccessChain 424(sizeQueryTemp) 191
- 435: 12(int) Load 434
- Store 69(ElementsU) 435
- 437: 425 Load 427(g_tTexcdu4a)
- 438: 185(ivec3) ImageQuerySizeLod 437 25
- Store 436(sizeQueryTemp) 438
- 439: 13(ptr) AccessChain 436(sizeQueryTemp) 66
- 440: 12(int) Load 439
- Store 21(WidthU) 440
- 441: 13(ptr) AccessChain 436(sizeQueryTemp) 70
- 442: 12(int) Load 441
- Store 128(HeightU) 442
- 443: 13(ptr) AccessChain 436(sizeQueryTemp) 191
- 444: 12(int) Load 443
- Store 69(ElementsU) 444
- 445: 425 Load 427(g_tTexcdu4a)
- 446: 19(int) ImageQueryLevels 445
- Store 28(NumberOfLevelsU) 446
- 451: 448 Load 450(g_tTex2dmsf4)
- 452: 64(ivec2) ImageQuerySize 451
- Store 447(sizeQueryTemp) 452
- 453: 13(ptr) AccessChain 447(sizeQueryTemp) 66
- 454: 12(int) Load 453
- Store 21(WidthU) 454
- 455: 13(ptr) AccessChain 447(sizeQueryTemp) 70
- 456: 12(int) Load 455
- Store 128(HeightU) 456
- 458: 448 Load 450(g_tTex2dmsf4)
- 459: 19(int) ImageQuerySamples 458
- Store 457(NumberOfSamplesU) 459
- 464: 461 Load 463(g_tTex2dmsi4)
- 465: 64(ivec2) ImageQuerySize 464
- Store 460(sizeQueryTemp) 465
- 466: 13(ptr) AccessChain 460(sizeQueryTemp) 66
- 467: 12(int) Load 466
- Store 21(WidthU) 467
- 468: 13(ptr) AccessChain 460(sizeQueryTemp) 70
- 469: 12(int) Load 468
- Store 128(HeightU) 469
- 470: 461 Load 463(g_tTex2dmsi4)
- 471: 19(int) ImageQuerySamples 470
- Store 457(NumberOfSamplesU) 471
- 476: 473 Load 475(g_tTex2dmsu4)
- 477: 64(ivec2) ImageQuerySize 476
- Store 472(sizeQueryTemp) 477
- 478: 13(ptr) AccessChain 472(sizeQueryTemp) 66
- 479: 12(int) Load 478
- Store 21(WidthU) 479
- 480: 13(ptr) AccessChain 472(sizeQueryTemp) 70
- 481: 12(int) Load 480
- Store 128(HeightU) 481
- 482: 473 Load 475(g_tTex2dmsu4)
- 483: 19(int) ImageQuerySamples 482
- Store 457(NumberOfSamplesU) 483
- 488: 485 Load 487(g_tTex2dmsf4a)
- 489: 185(ivec3) ImageQuerySize 488
- Store 484(sizeQueryTemp) 489
- 490: 13(ptr) AccessChain 484(sizeQueryTemp) 66
- 491: 12(int) Load 490
- Store 21(WidthU) 491
- 492: 13(ptr) AccessChain 484(sizeQueryTemp) 70
- 493: 12(int) Load 492
- Store 128(HeightU) 493
- 494: 13(ptr) AccessChain 484(sizeQueryTemp) 191
- 495: 12(int) Load 494
- Store 69(ElementsU) 495
- 496: 485 Load 487(g_tTex2dmsf4a)
- 497: 19(int) ImageQuerySamples 496
- Store 457(NumberOfSamplesU) 497
- 502: 499 Load 501(g_tTex2dmsi4a)
- 503: 185(ivec3) ImageQuerySize 502
- Store 498(sizeQueryTemp) 503
- 504: 13(ptr) AccessChain 498(sizeQueryTemp) 66
- 505: 12(int) Load 504
- Store 21(WidthU) 505
- 506: 13(ptr) AccessChain 498(sizeQueryTemp) 70
- 507: 12(int) Load 506
- Store 128(HeightU) 507
- 508: 13(ptr) AccessChain 498(sizeQueryTemp) 191
- 509: 12(int) Load 508
- Store 69(ElementsU) 509
- 510: 499 Load 501(g_tTex2dmsi4a)
- 511: 19(int) ImageQuerySamples 510
- Store 457(NumberOfSamplesU) 511
- 516: 513 Load 515(g_tTex2dmsu4a)
- 517: 185(ivec3) ImageQuerySize 516
- Store 512(sizeQueryTemp) 517
- 518: 13(ptr) AccessChain 512(sizeQueryTemp) 66
- 519: 12(int) Load 518
- Store 21(WidthU) 519
- 520: 13(ptr) AccessChain 512(sizeQueryTemp) 70
- 521: 12(int) Load 520
- Store 128(HeightU) 521
- 522: 13(ptr) AccessChain 512(sizeQueryTemp) 191
- 523: 12(int) Load 522
- Store 69(ElementsU) 523
- 524: 513 Load 515(g_tTex2dmsu4a)
- 525: 19(int) ImageQuerySamples 524
- Store 457(NumberOfSamplesU) 525
- 532: 531(ptr) AccessChain 527(psout) 528
+ 21: 19(int) ImageQuerySizeLod 18 20
+ Store 14(sizeQueryTemp) 21
+ 23: 12(int) Load 14(sizeQueryTemp)
+ Store 22(WidthU) 23
+ 25: 15 Load 17(g_tTex1df4)
+ 27: 19(int) ImageQuerySizeLod 25 26
+ Store 24(sizeQueryTemp) 27
+ 28: 12(int) Load 24(sizeQueryTemp)
+ Store 22(WidthU) 28
+ 30: 15 Load 17(g_tTex1df4)
+ 31: 19(int) ImageQueryLevels 30
+ Store 29(NumberOfLevelsU) 31
+ 36: 33 Load 35(g_tTex1di4)
+ 37: 19(int) ImageQuerySizeLod 36 20
+ Store 32(sizeQueryTemp) 37
+ 38: 12(int) Load 32(sizeQueryTemp)
+ Store 22(WidthU) 38
+ 40: 33 Load 35(g_tTex1di4)
+ 41: 19(int) ImageQuerySizeLod 40 26
+ Store 39(sizeQueryTemp) 41
+ 42: 12(int) Load 39(sizeQueryTemp)
+ Store 22(WidthU) 42
+ 43: 33 Load 35(g_tTex1di4)
+ 44: 19(int) ImageQueryLevels 43
+ Store 29(NumberOfLevelsU) 44
+ 49: 46 Load 48(g_tTex1du4)
+ 50: 19(int) ImageQuerySizeLod 49 20
+ Store 45(sizeQueryTemp) 50
+ 51: 12(int) Load 45(sizeQueryTemp)
+ Store 22(WidthU) 51
+ 53: 46 Load 48(g_tTex1du4)
+ 54: 19(int) ImageQuerySizeLod 53 26
+ Store 52(sizeQueryTemp) 54
+ 55: 12(int) Load 52(sizeQueryTemp)
+ Store 22(WidthU) 55
+ 56: 46 Load 48(g_tTex1du4)
+ 57: 19(int) ImageQueryLevels 56
+ Store 29(NumberOfLevelsU) 57
+ 64: 61 Load 63(g_tTex1df4a)
+ 66: 65(ivec2) ImageQuerySizeLod 64 20
+ Store 60(sizeQueryTemp) 66
+ 68: 13(ptr) AccessChain 60(sizeQueryTemp) 67
+ 69: 12(int) Load 68
+ Store 22(WidthU) 69
+ 72: 13(ptr) AccessChain 60(sizeQueryTemp) 71
+ 73: 12(int) Load 72
+ Store 70(ElementsU) 73
+ 75: 61 Load 63(g_tTex1df4a)
+ 76: 65(ivec2) ImageQuerySizeLod 75 26
+ Store 74(sizeQueryTemp) 76
+ 77: 13(ptr) AccessChain 74(sizeQueryTemp) 67
+ 78: 12(int) Load 77
+ Store 22(WidthU) 78
+ 79: 13(ptr) AccessChain 74(sizeQueryTemp) 71
+ 80: 12(int) Load 79
+ Store 70(ElementsU) 80
+ 81: 61 Load 63(g_tTex1df4a)
+ 82: 19(int) ImageQueryLevels 81
+ Store 29(NumberOfLevelsU) 82
+ 87: 84 Load 86(g_tTex1di4a)
+ 88: 65(ivec2) ImageQuerySizeLod 87 20
+ Store 83(sizeQueryTemp) 88
+ 89: 13(ptr) AccessChain 83(sizeQueryTemp) 67
+ 90: 12(int) Load 89
+ Store 22(WidthU) 90
+ 91: 13(ptr) AccessChain 83(sizeQueryTemp) 71
+ 92: 12(int) Load 91
+ Store 70(ElementsU) 92
+ 94: 84 Load 86(g_tTex1di4a)
+ 95: 65(ivec2) ImageQuerySizeLod 94 26
+ Store 93(sizeQueryTemp) 95
+ 96: 13(ptr) AccessChain 93(sizeQueryTemp) 67
+ 97: 12(int) Load 96
+ Store 22(WidthU) 97
+ 98: 13(ptr) AccessChain 93(sizeQueryTemp) 71
+ 99: 12(int) Load 98
+ Store 70(ElementsU) 99
+ 100: 84 Load 86(g_tTex1di4a)
+ 101: 19(int) ImageQueryLevels 100
+ Store 29(NumberOfLevelsU) 101
+ 106: 103 Load 105(g_tTex1du4a)
+ 107: 65(ivec2) ImageQuerySizeLod 106 20
+ Store 102(sizeQueryTemp) 107
+ 108: 13(ptr) AccessChain 102(sizeQueryTemp) 67
+ 109: 12(int) Load 108
+ Store 22(WidthU) 109
+ 110: 13(ptr) AccessChain 102(sizeQueryTemp) 71
+ 111: 12(int) Load 110
+ Store 70(ElementsU) 111
+ 113: 103 Load 105(g_tTex1du4a)
+ 114: 65(ivec2) ImageQuerySizeLod 113 26
+ Store 112(sizeQueryTemp) 114
+ 115: 13(ptr) AccessChain 112(sizeQueryTemp) 67
+ 116: 12(int) Load 115
+ Store 22(WidthU) 116
+ 117: 13(ptr) AccessChain 112(sizeQueryTemp) 71
+ 118: 12(int) Load 117
+ Store 70(ElementsU) 118
+ 119: 103 Load 105(g_tTex1du4a)
+ 120: 19(int) ImageQueryLevels 119
+ Store 29(NumberOfLevelsU) 120
+ 125: 122 Load 124(g_tTex2df4)
+ 126: 65(ivec2) ImageQuerySizeLod 125 20
+ Store 121(sizeQueryTemp) 126
+ 127: 13(ptr) AccessChain 121(sizeQueryTemp) 67
+ 128: 12(int) Load 127
+ Store 22(WidthU) 128
+ 130: 13(ptr) AccessChain 121(sizeQueryTemp) 71
+ 131: 12(int) Load 130
+ Store 129(HeightU) 131
+ 133: 122 Load 124(g_tTex2df4)
+ 134: 65(ivec2) ImageQuerySizeLod 133 26
+ Store 132(sizeQueryTemp) 134
+ 135: 13(ptr) AccessChain 132(sizeQueryTemp) 67
+ 136: 12(int) Load 135
+ Store 22(WidthU) 136
+ 137: 13(ptr) AccessChain 132(sizeQueryTemp) 71
+ 138: 12(int) Load 137
+ Store 129(HeightU) 138
+ 139: 122 Load 124(g_tTex2df4)
+ 140: 19(int) ImageQueryLevels 139
+ Store 29(NumberOfLevelsU) 140
+ 145: 142 Load 144(g_tTex2di4)
+ 146: 65(ivec2) ImageQuerySizeLod 145 20
+ Store 141(sizeQueryTemp) 146
+ 147: 13(ptr) AccessChain 141(sizeQueryTemp) 67
+ 148: 12(int) Load 147
+ Store 22(WidthU) 148
+ 149: 13(ptr) AccessChain 141(sizeQueryTemp) 71
+ 150: 12(int) Load 149
+ Store 129(HeightU) 150
+ 152: 142 Load 144(g_tTex2di4)
+ 153: 65(ivec2) ImageQuerySizeLod 152 26
+ Store 151(sizeQueryTemp) 153
+ 154: 13(ptr) AccessChain 151(sizeQueryTemp) 67
+ 155: 12(int) Load 154
+ Store 22(WidthU) 155
+ 156: 13(ptr) AccessChain 151(sizeQueryTemp) 71
+ 157: 12(int) Load 156
+ Store 129(HeightU) 157
+ 158: 142 Load 144(g_tTex2di4)
+ 159: 19(int) ImageQueryLevels 158
+ Store 29(NumberOfLevelsU) 159
+ 164: 161 Load 163(g_tTex2du4)
+ 165: 65(ivec2) ImageQuerySizeLod 164 20
+ Store 160(sizeQueryTemp) 165
+ 166: 13(ptr) AccessChain 160(sizeQueryTemp) 67
+ 167: 12(int) Load 166
+ Store 22(WidthU) 167
+ 168: 13(ptr) AccessChain 160(sizeQueryTemp) 71
+ 169: 12(int) Load 168
+ Store 129(HeightU) 169
+ 171: 161 Load 163(g_tTex2du4)
+ 172: 65(ivec2) ImageQuerySizeLod 171 26
+ Store 170(sizeQueryTemp) 172
+ 173: 13(ptr) AccessChain 170(sizeQueryTemp) 67
+ 174: 12(int) Load 173
+ Store 22(WidthU) 174
+ 175: 13(ptr) AccessChain 170(sizeQueryTemp) 71
+ 176: 12(int) Load 175
+ Store 129(HeightU) 176
+ 177: 161 Load 163(g_tTex2du4)
+ 178: 19(int) ImageQueryLevels 177
+ Store 29(NumberOfLevelsU) 178
+ 185: 182 Load 184(g_tTex2df4a)
+ 187: 186(ivec3) ImageQuerySizeLod 185 20
+ Store 181(sizeQueryTemp) 187
+ 188: 13(ptr) AccessChain 181(sizeQueryTemp) 67
+ 189: 12(int) Load 188
+ Store 22(WidthU) 189
+ 190: 13(ptr) AccessChain 181(sizeQueryTemp) 71
+ 191: 12(int) Load 190
+ Store 129(HeightU) 191
+ 193: 13(ptr) AccessChain 181(sizeQueryTemp) 192
+ 194: 12(int) Load 193
+ Store 70(ElementsU) 194
+ 196: 182 Load 184(g_tTex2df4a)
+ 197: 186(ivec3) ImageQuerySizeLod 196 26
+ Store 195(sizeQueryTemp) 197
+ 198: 13(ptr) AccessChain 195(sizeQueryTemp) 67
+ 199: 12(int) Load 198
+ Store 22(WidthU) 199
+ 200: 13(ptr) AccessChain 195(sizeQueryTemp) 71
+ 201: 12(int) Load 200
+ Store 129(HeightU) 201
+ 202: 13(ptr) AccessChain 195(sizeQueryTemp) 192
+ 203: 12(int) Load 202
+ Store 70(ElementsU) 203
+ 204: 182 Load 184(g_tTex2df4a)
+ 205: 19(int) ImageQueryLevels 204
+ Store 29(NumberOfLevelsU) 205
+ 210: 207 Load 209(g_tTex2di4a)
+ 211: 186(ivec3) ImageQuerySizeLod 210 20
+ Store 206(sizeQueryTemp) 211
+ 212: 13(ptr) AccessChain 206(sizeQueryTemp) 67
+ 213: 12(int) Load 212
+ Store 22(WidthU) 213
+ 214: 13(ptr) AccessChain 206(sizeQueryTemp) 71
+ 215: 12(int) Load 214
+ Store 129(HeightU) 215
+ 216: 13(ptr) AccessChain 206(sizeQueryTemp) 192
+ 217: 12(int) Load 216
+ Store 70(ElementsU) 217
+ 219: 207 Load 209(g_tTex2di4a)
+ 220: 186(ivec3) ImageQuerySizeLod 219 26
+ Store 218(sizeQueryTemp) 220
+ 221: 13(ptr) AccessChain 218(sizeQueryTemp) 67
+ 222: 12(int) Load 221
+ Store 22(WidthU) 222
+ 223: 13(ptr) AccessChain 218(sizeQueryTemp) 71
+ 224: 12(int) Load 223
+ Store 129(HeightU) 224
+ 225: 13(ptr) AccessChain 218(sizeQueryTemp) 192
+ 226: 12(int) Load 225
+ Store 70(ElementsU) 226
+ 227: 207 Load 209(g_tTex2di4a)
+ 228: 19(int) ImageQueryLevels 227
+ Store 29(NumberOfLevelsU) 228
+ 233: 230 Load 232(g_tTex2du4a)
+ 234: 186(ivec3) ImageQuerySizeLod 233 20
+ Store 229(sizeQueryTemp) 234
+ 235: 13(ptr) AccessChain 229(sizeQueryTemp) 67
+ 236: 12(int) Load 235
+ Store 22(WidthU) 236
+ 237: 13(ptr) AccessChain 229(sizeQueryTemp) 71
+ 238: 12(int) Load 237
+ Store 129(HeightU) 238
+ 239: 13(ptr) AccessChain 229(sizeQueryTemp) 192
+ 240: 12(int) Load 239
+ Store 70(ElementsU) 240
+ 242: 230 Load 232(g_tTex2du4a)
+ 243: 186(ivec3) ImageQuerySizeLod 242 26
+ Store 241(sizeQueryTemp) 243
+ 244: 13(ptr) AccessChain 241(sizeQueryTemp) 67
+ 245: 12(int) Load 244
+ Store 22(WidthU) 245
+ 246: 13(ptr) AccessChain 241(sizeQueryTemp) 71
+ 247: 12(int) Load 246
+ Store 129(HeightU) 247
+ 248: 13(ptr) AccessChain 241(sizeQueryTemp) 192
+ 249: 12(int) Load 248
+ Store 70(ElementsU) 249
+ 250: 230 Load 232(g_tTex2du4a)
+ 251: 19(int) ImageQueryLevels 250
+ Store 29(NumberOfLevelsU) 251
+ 256: 253 Load 255(g_tTex3df4)
+ 257: 186(ivec3) ImageQuerySizeLod 256 20
+ Store 252(sizeQueryTemp) 257
+ 258: 13(ptr) AccessChain 252(sizeQueryTemp) 67
+ 259: 12(int) Load 258
+ Store 22(WidthU) 259
+ 260: 13(ptr) AccessChain 252(sizeQueryTemp) 71
+ 261: 12(int) Load 260
+ Store 129(HeightU) 261
+ 263: 13(ptr) AccessChain 252(sizeQueryTemp) 192
+ 264: 12(int) Load 263
+ Store 262(DepthU) 264
+ 266: 253 Load 255(g_tTex3df4)
+ 267: 186(ivec3) ImageQuerySizeLod 266 26
+ Store 265(sizeQueryTemp) 267
+ 268: 13(ptr) AccessChain 265(sizeQueryTemp) 67
+ 269: 12(int) Load 268
+ Store 22(WidthU) 269
+ 270: 13(ptr) AccessChain 265(sizeQueryTemp) 71
+ 271: 12(int) Load 270
+ Store 129(HeightU) 271
+ 272: 13(ptr) AccessChain 265(sizeQueryTemp) 192
+ 273: 12(int) Load 272
+ Store 262(DepthU) 273
+ 274: 253 Load 255(g_tTex3df4)
+ 275: 19(int) ImageQueryLevels 274
+ Store 29(NumberOfLevelsU) 275
+ 280: 277 Load 279(g_tTex3di4)
+ 281: 186(ivec3) ImageQuerySizeLod 280 20
+ Store 276(sizeQueryTemp) 281
+ 282: 13(ptr) AccessChain 276(sizeQueryTemp) 67
+ 283: 12(int) Load 282
+ Store 22(WidthU) 283
+ 284: 13(ptr) AccessChain 276(sizeQueryTemp) 71
+ 285: 12(int) Load 284
+ Store 129(HeightU) 285
+ 286: 13(ptr) AccessChain 276(sizeQueryTemp) 192
+ 287: 12(int) Load 286
+ Store 262(DepthU) 287
+ 289: 277 Load 279(g_tTex3di4)
+ 290: 186(ivec3) ImageQuerySizeLod 289 26
+ Store 288(sizeQueryTemp) 290
+ 291: 13(ptr) AccessChain 288(sizeQueryTemp) 67
+ 292: 12(int) Load 291
+ Store 22(WidthU) 292
+ 293: 13(ptr) AccessChain 288(sizeQueryTemp) 71
+ 294: 12(int) Load 293
+ Store 129(HeightU) 294
+ 295: 13(ptr) AccessChain 288(sizeQueryTemp) 192
+ 296: 12(int) Load 295
+ Store 262(DepthU) 296
+ 297: 277 Load 279(g_tTex3di4)
+ 298: 19(int) ImageQueryLevels 297
+ Store 29(NumberOfLevelsU) 298
+ 303: 300 Load 302(g_tTex3du4)
+ 304: 186(ivec3) ImageQuerySizeLod 303 20
+ Store 299(sizeQueryTemp) 304
+ 305: 13(ptr) AccessChain 299(sizeQueryTemp) 67
+ 306: 12(int) Load 305
+ Store 22(WidthU) 306
+ 307: 13(ptr) AccessChain 299(sizeQueryTemp) 71
+ 308: 12(int) Load 307
+ Store 129(HeightU) 308
+ 309: 13(ptr) AccessChain 299(sizeQueryTemp) 192
+ 310: 12(int) Load 309
+ Store 262(DepthU) 310
+ 312: 300 Load 302(g_tTex3du4)
+ 313: 186(ivec3) ImageQuerySizeLod 312 26
+ Store 311(sizeQueryTemp) 313
+ 314: 13(ptr) AccessChain 311(sizeQueryTemp) 67
+ 315: 12(int) Load 314
+ Store 22(WidthU) 315
+ 316: 13(ptr) AccessChain 311(sizeQueryTemp) 71
+ 317: 12(int) Load 316
+ Store 129(HeightU) 317
+ 318: 13(ptr) AccessChain 311(sizeQueryTemp) 192
+ 319: 12(int) Load 318
+ Store 262(DepthU) 319
+ 320: 300 Load 302(g_tTex3du4)
+ 321: 19(int) ImageQueryLevels 320
+ Store 29(NumberOfLevelsU) 321
+ 326: 323 Load 325(g_tTexcdf4)
+ 327: 65(ivec2) ImageQuerySizeLod 326 20
+ Store 322(sizeQueryTemp) 327
+ 328: 13(ptr) AccessChain 322(sizeQueryTemp) 67
+ 329: 12(int) Load 328
+ Store 22(WidthU) 329
+ 330: 13(ptr) AccessChain 322(sizeQueryTemp) 71
+ 331: 12(int) Load 330
+ Store 129(HeightU) 331
+ 333: 323 Load 325(g_tTexcdf4)
+ 334: 65(ivec2) ImageQuerySizeLod 333 26
+ Store 332(sizeQueryTemp) 334
+ 335: 13(ptr) AccessChain 332(sizeQueryTemp) 67
+ 336: 12(int) Load 335
+ Store 22(WidthU) 336
+ 337: 13(ptr) AccessChain 332(sizeQueryTemp) 71
+ 338: 12(int) Load 337
+ Store 129(HeightU) 338
+ 339: 323 Load 325(g_tTexcdf4)
+ 340: 19(int) ImageQueryLevels 339
+ Store 29(NumberOfLevelsU) 340
+ 345: 342 Load 344(g_tTexcdi4)
+ 346: 65(ivec2) ImageQuerySizeLod 345 20
+ Store 341(sizeQueryTemp) 346
+ 347: 13(ptr) AccessChain 341(sizeQueryTemp) 67
+ 348: 12(int) Load 347
+ Store 22(WidthU) 348
+ 349: 13(ptr) AccessChain 341(sizeQueryTemp) 71
+ 350: 12(int) Load 349
+ Store 129(HeightU) 350
+ 352: 342 Load 344(g_tTexcdi4)
+ 353: 65(ivec2) ImageQuerySizeLod 352 26
+ Store 351(sizeQueryTemp) 353
+ 354: 13(ptr) AccessChain 351(sizeQueryTemp) 67
+ 355: 12(int) Load 354
+ Store 22(WidthU) 355
+ 356: 13(ptr) AccessChain 351(sizeQueryTemp) 71
+ 357: 12(int) Load 356
+ Store 129(HeightU) 357
+ 358: 342 Load 344(g_tTexcdi4)
+ 359: 19(int) ImageQueryLevels 358
+ Store 29(NumberOfLevelsU) 359
+ 364: 361 Load 363(g_tTexcdu4)
+ 365: 65(ivec2) ImageQuerySizeLod 364 20
+ Store 360(sizeQueryTemp) 365
+ 366: 13(ptr) AccessChain 360(sizeQueryTemp) 67
+ 367: 12(int) Load 366
+ Store 22(WidthU) 367
+ 368: 13(ptr) AccessChain 360(sizeQueryTemp) 71
+ 369: 12(int) Load 368
+ Store 129(HeightU) 369
+ 371: 361 Load 363(g_tTexcdu4)
+ 372: 65(ivec2) ImageQuerySizeLod 371 26
+ Store 370(sizeQueryTemp) 372
+ 373: 13(ptr) AccessChain 370(sizeQueryTemp) 67
+ 374: 12(int) Load 373
+ Store 22(WidthU) 374
+ 375: 13(ptr) AccessChain 370(sizeQueryTemp) 71
+ 376: 12(int) Load 375
+ Store 129(HeightU) 376
+ 377: 361 Load 363(g_tTexcdu4)
+ 378: 19(int) ImageQueryLevels 377
+ Store 29(NumberOfLevelsU) 378
+ 383: 380 Load 382(g_tTexcdf4a)
+ 384: 186(ivec3) ImageQuerySizeLod 383 20
+ Store 379(sizeQueryTemp) 384
+ 385: 13(ptr) AccessChain 379(sizeQueryTemp) 67
+ 386: 12(int) Load 385
+ Store 22(WidthU) 386
+ 387: 13(ptr) AccessChain 379(sizeQueryTemp) 71
+ 388: 12(int) Load 387
+ Store 129(HeightU) 388
+ 389: 13(ptr) AccessChain 379(sizeQueryTemp) 192
+ 390: 12(int) Load 389
+ Store 70(ElementsU) 390
+ 392: 380 Load 382(g_tTexcdf4a)
+ 393: 186(ivec3) ImageQuerySizeLod 392 26
+ Store 391(sizeQueryTemp) 393
+ 394: 13(ptr) AccessChain 391(sizeQueryTemp) 67
+ 395: 12(int) Load 394
+ Store 22(WidthU) 395
+ 396: 13(ptr) AccessChain 391(sizeQueryTemp) 71
+ 397: 12(int) Load 396
+ Store 129(HeightU) 397
+ 398: 13(ptr) AccessChain 391(sizeQueryTemp) 192
+ 399: 12(int) Load 398
+ Store 70(ElementsU) 399
+ 400: 380 Load 382(g_tTexcdf4a)
+ 401: 19(int) ImageQueryLevels 400
+ Store 29(NumberOfLevelsU) 401
+ 406: 403 Load 405(g_tTexcdi4a)
+ 407: 186(ivec3) ImageQuerySizeLod 406 20
+ Store 402(sizeQueryTemp) 407
+ 408: 13(ptr) AccessChain 402(sizeQueryTemp) 67
+ 409: 12(int) Load 408
+ Store 22(WidthU) 409
+ 410: 13(ptr) AccessChain 402(sizeQueryTemp) 71
+ 411: 12(int) Load 410
+ Store 129(HeightU) 411
+ 412: 13(ptr) AccessChain 402(sizeQueryTemp) 192
+ 413: 12(int) Load 412
+ Store 70(ElementsU) 413
+ 415: 403 Load 405(g_tTexcdi4a)
+ 416: 186(ivec3) ImageQuerySizeLod 415 26
+ Store 414(sizeQueryTemp) 416
+ 417: 13(ptr) AccessChain 414(sizeQueryTemp) 67
+ 418: 12(int) Load 417
+ Store 22(WidthU) 418
+ 419: 13(ptr) AccessChain 414(sizeQueryTemp) 71
+ 420: 12(int) Load 419
+ Store 129(HeightU) 420
+ 421: 13(ptr) AccessChain 414(sizeQueryTemp) 192
+ 422: 12(int) Load 421
+ Store 70(ElementsU) 422
+ 423: 403 Load 405(g_tTexcdi4a)
+ 424: 19(int) ImageQueryLevels 423
+ Store 29(NumberOfLevelsU) 424
+ 429: 426 Load 428(g_tTexcdu4a)
+ 430: 186(ivec3) ImageQuerySizeLod 429 20
+ Store 425(sizeQueryTemp) 430
+ 431: 13(ptr) AccessChain 425(sizeQueryTemp) 67
+ 432: 12(int) Load 431
+ Store 22(WidthU) 432
+ 433: 13(ptr) AccessChain 425(sizeQueryTemp) 71
+ 434: 12(int) Load 433
+ Store 129(HeightU) 434
+ 435: 13(ptr) AccessChain 425(sizeQueryTemp) 192
+ 436: 12(int) Load 435
+ Store 70(ElementsU) 436
+ 438: 426 Load 428(g_tTexcdu4a)
+ 439: 186(ivec3) ImageQuerySizeLod 438 26
+ Store 437(sizeQueryTemp) 439
+ 440: 13(ptr) AccessChain 437(sizeQueryTemp) 67
+ 441: 12(int) Load 440
+ Store 22(WidthU) 441
+ 442: 13(ptr) AccessChain 437(sizeQueryTemp) 71
+ 443: 12(int) Load 442
+ Store 129(HeightU) 443
+ 444: 13(ptr) AccessChain 437(sizeQueryTemp) 192
+ 445: 12(int) Load 444
+ Store 70(ElementsU) 445
+ 446: 426 Load 428(g_tTexcdu4a)
+ 447: 19(int) ImageQueryLevels 446
+ Store 29(NumberOfLevelsU) 447
+ 452: 449 Load 451(g_tTex2dmsf4)
+ 453: 65(ivec2) ImageQuerySize 452
+ Store 448(sizeQueryTemp) 453
+ 454: 13(ptr) AccessChain 448(sizeQueryTemp) 67
+ 455: 12(int) Load 454
+ Store 22(WidthU) 455
+ 456: 13(ptr) AccessChain 448(sizeQueryTemp) 71
+ 457: 12(int) Load 456
+ Store 129(HeightU) 457
+ 459: 449 Load 451(g_tTex2dmsf4)
+ 460: 19(int) ImageQuerySamples 459
+ Store 458(NumberOfSamplesU) 460
+ 465: 462 Load 464(g_tTex2dmsi4)
+ 466: 65(ivec2) ImageQuerySize 465
+ Store 461(sizeQueryTemp) 466
+ 467: 13(ptr) AccessChain 461(sizeQueryTemp) 67
+ 468: 12(int) Load 467
+ Store 22(WidthU) 468
+ 469: 13(ptr) AccessChain 461(sizeQueryTemp) 71
+ 470: 12(int) Load 469
+ Store 129(HeightU) 470
+ 471: 462 Load 464(g_tTex2dmsi4)
+ 472: 19(int) ImageQuerySamples 471
+ Store 458(NumberOfSamplesU) 472
+ 477: 474 Load 476(g_tTex2dmsu4)
+ 478: 65(ivec2) ImageQuerySize 477
+ Store 473(sizeQueryTemp) 478
+ 479: 13(ptr) AccessChain 473(sizeQueryTemp) 67
+ 480: 12(int) Load 479
+ Store 22(WidthU) 480
+ 481: 13(ptr) AccessChain 473(sizeQueryTemp) 71
+ 482: 12(int) Load 481
+ Store 129(HeightU) 482
+ 483: 474 Load 476(g_tTex2dmsu4)
+ 484: 19(int) ImageQuerySamples 483
+ Store 458(NumberOfSamplesU) 484
+ 489: 486 Load 488(g_tTex2dmsf4a)
+ 490: 186(ivec3) ImageQuerySize 489
+ Store 485(sizeQueryTemp) 490
+ 491: 13(ptr) AccessChain 485(sizeQueryTemp) 67
+ 492: 12(int) Load 491
+ Store 22(WidthU) 492
+ 493: 13(ptr) AccessChain 485(sizeQueryTemp) 71
+ 494: 12(int) Load 493
+ Store 129(HeightU) 494
+ 495: 13(ptr) AccessChain 485(sizeQueryTemp) 192
+ 496: 12(int) Load 495
+ Store 70(ElementsU) 496
+ 497: 486 Load 488(g_tTex2dmsf4a)
+ 498: 19(int) ImageQuerySamples 497
+ Store 458(NumberOfSamplesU) 498
+ 503: 500 Load 502(g_tTex2dmsi4a)
+ 504: 186(ivec3) ImageQuerySize 503
+ Store 499(sizeQueryTemp) 504
+ 505: 13(ptr) AccessChain 499(sizeQueryTemp) 67
+ 506: 12(int) Load 505
+ Store 22(WidthU) 506
+ 507: 13(ptr) AccessChain 499(sizeQueryTemp) 71
+ 508: 12(int) Load 507
+ Store 129(HeightU) 508
+ 509: 13(ptr) AccessChain 499(sizeQueryTemp) 192
+ 510: 12(int) Load 509
+ Store 70(ElementsU) 510
+ 511: 500 Load 502(g_tTex2dmsi4a)
+ 512: 19(int) ImageQuerySamples 511
+ Store 458(NumberOfSamplesU) 512
+ 517: 514 Load 516(g_tTex2dmsu4a)
+ 518: 186(ivec3) ImageQuerySize 517
+ Store 513(sizeQueryTemp) 518
+ 519: 13(ptr) AccessChain 513(sizeQueryTemp) 67
+ 520: 12(int) Load 519
+ Store 22(WidthU) 520
+ 521: 13(ptr) AccessChain 513(sizeQueryTemp) 71
+ 522: 12(int) Load 521
+ Store 129(HeightU) 522
+ 523: 13(ptr) AccessChain 513(sizeQueryTemp) 192
+ 524: 12(int) Load 523
+ Store 70(ElementsU) 524
+ 525: 514 Load 516(g_tTex2dmsu4a)
+ 526: 19(int) ImageQuerySamples 525
+ Store 458(NumberOfSamplesU) 526
+ 532: 531(ptr) AccessChain 528(psout) 20
Store 532 530
- 535: 534(ptr) AccessChain 527(psout) 533
+ 535: 534(ptr) AccessChain 528(psout) 533
Store 535 529
- 536:8(PS_OUTPUT) Load 527(psout)
+ 536:8(PS_OUTPUT) Load 528(psout)
ReturnValue 536
FunctionEnd
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
index f5c7db6..d211124 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
@@ -9,6 +9,8 @@
0:21 'sizeQueryTemp' (temp uint)
0:21 textureSize (temp uint)
0:21 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:21 Constant:
+0:21 0 (const int)
0:21 move second child to first child (temp uint)
0:21 'WidthU' (temp uint)
0:21 'sizeQueryTemp' (temp uint)
@@ -66,6 +68,8 @@
0:21 'sizeQueryTemp' (temp uint)
0:21 textureSize (temp uint)
0:21 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:21 Constant:
+0:21 0 (const int)
0:21 move second child to first child (temp uint)
0:21 'WidthU' (temp uint)
0:21 'sizeQueryTemp' (temp uint)
@@ -125,10 +129,10 @@
Name 10 "@main("
Name 14 "sizeQueryTemp"
Name 17 "g_tTex1df4"
- Name 21 "WidthU"
- Name 23 "sizeQueryTemp"
- Name 28 "NumberOfLevelsU"
- Name 32 "vsout"
+ Name 22 "WidthU"
+ Name 24 "sizeQueryTemp"
+ Name 29 "NumberOfLevelsU"
+ Name 33 "vsout"
Name 42 "@entryPointOutput_Pos"
Name 47 "g_sSamp"
Decorate 17(g_tTex1df4) DescriptorSet 0
@@ -148,9 +152,9 @@
16: TypePointer UniformConstant 15
17(g_tTex1df4): 16(ptr) Variable UniformConstant
19: TypeInt 32 1
- 25: 12(int) Constant 6
- 31: TypePointer Function 8(VS_OUTPUT)
- 33: 19(int) Constant 0
+ 20: 19(int) Constant 0
+ 26: 12(int) Constant 6
+ 32: TypePointer Function 8(VS_OUTPUT)
34: 6(float) Constant 0
35: 7(fvec4) ConstantComposite 34 34 34 34
36: TypePointer Function 7(fvec4)
@@ -169,25 +173,25 @@
10(@main():8(VS_OUTPUT) Function None 9
11: Label
14(sizeQueryTemp): 13(ptr) Variable Function
- 21(WidthU): 13(ptr) Variable Function
-23(sizeQueryTemp): 13(ptr) Variable Function
-28(NumberOfLevelsU): 13(ptr) Variable Function
- 32(vsout): 31(ptr) Variable Function
+ 22(WidthU): 13(ptr) Variable Function
+24(sizeQueryTemp): 13(ptr) Variable Function
+29(NumberOfLevelsU): 13(ptr) Variable Function
+ 33(vsout): 32(ptr) Variable Function
18: 15 Load 17(g_tTex1df4)
- 20: 19(int) ImageQuerySize 18
- Store 14(sizeQueryTemp) 20
- 22: 12(int) Load 14(sizeQueryTemp)
- Store 21(WidthU) 22
- 24: 15 Load 17(g_tTex1df4)
- 26: 19(int) ImageQuerySizeLod 24 25
- Store 23(sizeQueryTemp) 26
- 27: 12(int) Load 23(sizeQueryTemp)
- Store 21(WidthU) 27
- 29: 15 Load 17(g_tTex1df4)
- 30: 19(int) ImageQueryLevels 29
- Store 28(NumberOfLevelsU) 30
- 37: 36(ptr) AccessChain 32(vsout) 33
+ 21: 19(int) ImageQuerySizeLod 18 20
+ Store 14(sizeQueryTemp) 21
+ 23: 12(int) Load 14(sizeQueryTemp)
+ Store 22(WidthU) 23
+ 25: 15 Load 17(g_tTex1df4)
+ 27: 19(int) ImageQuerySizeLod 25 26
+ Store 24(sizeQueryTemp) 27
+ 28: 12(int) Load 24(sizeQueryTemp)
+ Store 22(WidthU) 28
+ 30: 15 Load 17(g_tTex1df4)
+ 31: 19(int) ImageQueryLevels 30
+ Store 29(NumberOfLevelsU) 31
+ 37: 36(ptr) AccessChain 33(vsout) 20
Store 37 35
- 38:8(VS_OUTPUT) Load 32(vsout)
+ 38:8(VS_OUTPUT) Load 33(vsout)
ReturnValue 38
FunctionEnd
diff --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out
index a0a67aa..eed102c 100755
--- a/Test/baseResults/hlsl.if.frag.out
+++ b/Test/baseResults/hlsl.if.frag.out
@@ -80,6 +80,16 @@
0:31 'ii' (temp float)
0:32 Pre-Increment (temp int)
0:32 'ii' (temp int)
+0:33 Test condition and select (temp void)
+0:33 Condition
+0:33 Compare Equal (temp bool)
+0:33 Convert int to float (temp float)
+0:33 'ii' (temp int)
+0:33 Constant:
+0:33 1.000000
+0:33 true case
+0:34 Pre-Increment (temp int)
+0:34 'ii' (temp int)
0:2 Function Definition: PixelShaderFunction( (temp void)
0:2 Function Parameters:
0:? Sequence
@@ -179,6 +189,16 @@
0:31 'ii' (temp float)
0:32 Pre-Increment (temp int)
0:32 'ii' (temp int)
+0:33 Test condition and select (temp void)
+0:33 Condition
+0:33 Compare Equal (temp bool)
+0:33 Convert int to float (temp float)
+0:33 'ii' (temp int)
+0:33 Constant:
+0:33 1.000000
+0:33 true case
+0:34 Pre-Increment (temp int)
+0:34 'ii' (temp int)
0:2 Function Definition: PixelShaderFunction( (temp void)
0:2 Function Parameters:
0:? Sequence
@@ -195,24 +215,24 @@
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 94
+// Id's are bound by 101
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 87 90
+ EntryPoint Fragment 4 "PixelShaderFunction" 94 97
ExecutionMode 4 OriginUpperLeft
Name 4 "PixelShaderFunction"
Name 11 "@PixelShaderFunction(vf4;"
Name 10 "input"
Name 68 "ii"
Name 80 "ii"
- Name 85 "input"
- Name 87 "input"
- Name 90 "@entryPointOutput"
- Name 91 "param"
- Decorate 87(input) Location 0
- Decorate 90(@entryPointOutput) Location 0
+ Name 92 "input"
+ Name 94 "input"
+ Name 97 "@entryPointOutput"
+ Name 98 "param"
+ Decorate 94(input) Location 0
+ Decorate 97(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -228,20 +248,20 @@
78: TypeInt 32 1
79: TypePointer Function 78(int)
82: 78(int) Constant 1
- 86: TypePointer Input 7(fvec4)
- 87(input): 86(ptr) Variable Input
- 89: TypePointer Output 7(fvec4)
-90(@entryPointOutput): 89(ptr) Variable Output
+ 93: TypePointer Input 7(fvec4)
+ 94(input): 93(ptr) Variable Input
+ 96: TypePointer Output 7(fvec4)
+97(@entryPointOutput): 96(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
- 85(input): 8(ptr) Variable Function
- 91(param): 8(ptr) Variable Function
- 88: 7(fvec4) Load 87(input)
- Store 85(input) 88
- 92: 7(fvec4) Load 85(input)
- Store 91(param) 92
- 93: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 91(param)
- Store 90(@entryPointOutput) 93
+ 92(input): 8(ptr) Variable Function
+ 98(param): 8(ptr) Variable Function
+ 95: 7(fvec4) Load 94(input)
+ Store 92(input) 95
+ 99: 7(fvec4) Load 92(input)
+ Store 98(param) 99
+ 100: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 98(param)
+ Store 97(@entryPointOutput) 100
Return
FunctionEnd
11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9
@@ -329,6 +349,17 @@
81: 78(int) Load 80(ii)
83: 78(int) IAdd 81 82
Store 80(ii) 83
- 84: 7(fvec4) Undef
- ReturnValue 84
+ 84: 78(int) Load 80(ii)
+ 85: 6(float) ConvertSToF 84
+ 86: 15(bool) FOrdEqual 85 76
+ SelectionMerge 88 None
+ BranchConditional 86 87 88
+ 87: Label
+ 89: 78(int) Load 80(ii)
+ 90: 78(int) IAdd 89 82
+ Store 80(ii) 90
+ Branch 88
+ 88: Label
+ 91: 7(fvec4) Undef
+ ReturnValue 91
FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
index 84ced71..1fd33c6 100644
--- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
@@ -11,7 +11,7 @@
0:3 unpackHalf2x16 (temp 2-component vector of float)
0:3 'inF0' (in uint)
0:3 Constant:
-0:3 0.000000
+0:3 0 (const int)
0:7 Function Definition: PixelShaderFunction1(vu1; (temp 1-component vector of float)
0:7 Function Parameters:
0:7 'inF0' (in 1-component vector of uint)
@@ -32,7 +32,7 @@
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
-0:13 0.000000
+0:13 0 (const int)
0:13 direct index (temp float)
0:13 unpackHalf2x16 (temp 2-component vector of float)
0:13 direct index (temp uint)
@@ -40,7 +40,7 @@
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
-0:13 0.000000
+0:13 0 (const int)
0:17 Function Definition: PixelShaderFunction3(vu3; (temp 3-component vector of float)
0:17 Function Parameters:
0:17 'inF0' (in 3-component vector of uint)
@@ -54,7 +54,7 @@
0:18 Constant:
0:18 0 (const int)
0:18 Constant:
-0:18 0.000000
+0:18 0 (const int)
0:18 direct index (temp float)
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:18 direct index (temp uint)
@@ -62,7 +62,7 @@
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
-0:18 0.000000
+0:18 0 (const int)
0:18 direct index (temp float)
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:18 direct index (temp uint)
@@ -70,7 +70,7 @@
0:18 Constant:
0:18 2 (const int)
0:18 Constant:
-0:18 0.000000
+0:18 0 (const int)
0:22 Function Definition: PixelShaderFunction(vu4; (temp 4-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in 4-component vector of uint)
@@ -84,7 +84,7 @@
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
-0:23 0.000000
+0:23 0 (const int)
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
@@ -92,7 +92,7 @@
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
-0:23 0.000000
+0:23 0 (const int)
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
@@ -100,7 +100,7 @@
0:23 Constant:
0:23 2 (const int)
0:23 Constant:
-0:23 0.000000
+0:23 0 (const int)
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
@@ -108,7 +108,7 @@
0:23 Constant:
0:23 3 (const int)
0:23 Constant:
-0:23 0.000000
+0:23 0 (const int)
0:27 Function Definition: @main( (temp 4-component vector of float)
0:27 Function Parameters:
0:? Sequence
@@ -143,7 +143,7 @@
0:3 unpackHalf2x16 (temp 2-component vector of float)
0:3 'inF0' (in uint)
0:3 Constant:
-0:3 0.000000
+0:3 0 (const int)
0:7 Function Definition: PixelShaderFunction1(vu1; (temp 1-component vector of float)
0:7 Function Parameters:
0:7 'inF0' (in 1-component vector of uint)
@@ -164,7 +164,7 @@
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
-0:13 0.000000
+0:13 0 (const int)
0:13 direct index (temp float)
0:13 unpackHalf2x16 (temp 2-component vector of float)
0:13 direct index (temp uint)
@@ -172,7 +172,7 @@
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
-0:13 0.000000
+0:13 0 (const int)
0:17 Function Definition: PixelShaderFunction3(vu3; (temp 3-component vector of float)
0:17 Function Parameters:
0:17 'inF0' (in 3-component vector of uint)
@@ -186,7 +186,7 @@
0:18 Constant:
0:18 0 (const int)
0:18 Constant:
-0:18 0.000000
+0:18 0 (const int)
0:18 direct index (temp float)
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:18 direct index (temp uint)
@@ -194,7 +194,7 @@
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
-0:18 0.000000
+0:18 0 (const int)
0:18 direct index (temp float)
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:18 direct index (temp uint)
@@ -202,7 +202,7 @@
0:18 Constant:
0:18 2 (const int)
0:18 Constant:
-0:18 0.000000
+0:18 0 (const int)
0:22 Function Definition: PixelShaderFunction(vu4; (temp 4-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in 4-component vector of uint)
@@ -216,7 +216,7 @@
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
-0:23 0.000000
+0:23 0 (const int)
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
@@ -224,7 +224,7 @@
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
-0:23 0.000000
+0:23 0 (const int)
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
@@ -232,7 +232,7 @@
0:23 Constant:
0:23 2 (const int)
0:23 Constant:
-0:23 0.000000
+0:23 0 (const int)
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
@@ -240,7 +240,7 @@
0:23 Constant:
0:23 3 (const int)
0:23 Constant:
-0:23 0.000000
+0:23 0 (const int)
0:27 Function Definition: @main( (temp 4-component vector of float)
0:27 Function Parameters:
0:? Sequence
diff --git a/Test/baseResults/hlsl.intrinsics.negative.frag.out b/Test/baseResults/hlsl.intrinsics.negative.frag.out
index 84df958..1ec75fc 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.frag.out
@@ -112,7 +112,7 @@
0:12 Convert float to uint (temp uint)
0:12 'inF0' (in float)
0:12 Constant:
-0:12 0.000000
+0:12 0 (const int)
0:13 findMSB (temp uint)
0:13 Convert float to uint (temp uint)
0:13 'inF0' (in float)
@@ -202,7 +202,7 @@
0:52 Constant:
0:52 0 (const int)
0:52 Constant:
-0:52 0.000000
+0:52 0 (const int)
0:52 direct index (temp float)
0:52 unpackHalf2x16 (temp 2-component vector of float)
0:52 direct index (temp uint)
@@ -211,7 +211,7 @@
0:52 Constant:
0:52 1 (const int)
0:52 Constant:
-0:52 0.000000
+0:52 0 (const int)
0:53 findMSB (temp 2-component vector of uint)
0:53 Convert float to uint (temp 2-component vector of uint)
0:53 'inF0' (in 2-component vector of float)
@@ -252,7 +252,7 @@
0:68 Constant:
0:68 0 (const int)
0:68 Constant:
-0:68 0.000000
+0:68 0 (const int)
0:68 direct index (temp float)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 direct index (temp uint)
@@ -261,7 +261,7 @@
0:68 Constant:
0:68 1 (const int)
0:68 Constant:
-0:68 0.000000
+0:68 0 (const int)
0:68 direct index (temp float)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 direct index (temp uint)
@@ -270,7 +270,7 @@
0:68 Constant:
0:68 2 (const int)
0:68 Constant:
-0:68 0.000000
+0:68 0 (const int)
0:69 findMSB (temp 3-component vector of uint)
0:69 Convert float to uint (temp 3-component vector of uint)
0:69 'inF0' (in 3-component vector of float)
@@ -315,7 +315,7 @@
0:85 Constant:
0:85 0 (const int)
0:85 Constant:
-0:85 0.000000
+0:85 0 (const int)
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
@@ -324,7 +324,7 @@
0:85 Constant:
0:85 1 (const int)
0:85 Constant:
-0:85 0.000000
+0:85 0 (const int)
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
@@ -333,7 +333,7 @@
0:85 Constant:
0:85 2 (const int)
0:85 Constant:
-0:85 0.000000
+0:85 0 (const int)
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
@@ -342,7 +342,7 @@
0:85 Constant:
0:85 3 (const int)
0:85 Constant:
-0:85 0.000000
+0:85 0 (const int)
0:86 findMSB (temp 4-component vector of uint)
0:86 Convert float to uint (temp 4-component vector of uint)
0:86 'inF0' (in 4-component vector of float)
@@ -574,7 +574,7 @@
0:12 Convert float to uint (temp uint)
0:12 'inF0' (in float)
0:12 Constant:
-0:12 0.000000
+0:12 0 (const int)
0:13 findMSB (temp uint)
0:13 Convert float to uint (temp uint)
0:13 'inF0' (in float)
@@ -664,7 +664,7 @@
0:52 Constant:
0:52 0 (const int)
0:52 Constant:
-0:52 0.000000
+0:52 0 (const int)
0:52 direct index (temp float)
0:52 unpackHalf2x16 (temp 2-component vector of float)
0:52 direct index (temp uint)
@@ -673,7 +673,7 @@
0:52 Constant:
0:52 1 (const int)
0:52 Constant:
-0:52 0.000000
+0:52 0 (const int)
0:53 findMSB (temp 2-component vector of uint)
0:53 Convert float to uint (temp 2-component vector of uint)
0:53 'inF0' (in 2-component vector of float)
@@ -714,7 +714,7 @@
0:68 Constant:
0:68 0 (const int)
0:68 Constant:
-0:68 0.000000
+0:68 0 (const int)
0:68 direct index (temp float)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 direct index (temp uint)
@@ -723,7 +723,7 @@
0:68 Constant:
0:68 1 (const int)
0:68 Constant:
-0:68 0.000000
+0:68 0 (const int)
0:68 direct index (temp float)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 direct index (temp uint)
@@ -732,7 +732,7 @@
0:68 Constant:
0:68 2 (const int)
0:68 Constant:
-0:68 0.000000
+0:68 0 (const int)
0:69 findMSB (temp 3-component vector of uint)
0:69 Convert float to uint (temp 3-component vector of uint)
0:69 'inF0' (in 3-component vector of float)
@@ -777,7 +777,7 @@
0:85 Constant:
0:85 0 (const int)
0:85 Constant:
-0:85 0.000000
+0:85 0 (const int)
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
@@ -786,7 +786,7 @@
0:85 Constant:
0:85 1 (const int)
0:85 Constant:
-0:85 0.000000
+0:85 0 (const int)
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
@@ -795,7 +795,7 @@
0:85 Constant:
0:85 2 (const int)
0:85 Constant:
-0:85 0.000000
+0:85 0 (const int)
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
@@ -804,7 +804,7 @@
0:85 Constant:
0:85 3 (const int)
0:85 Constant:
-0:85 0.000000
+0:85 0 (const int)
0:86 findMSB (temp 4-component vector of uint)
0:86 Convert float to uint (temp 4-component vector of uint)
0:86 'inF0' (in 4-component vector of float)
diff --git a/Test/baseResults/hlsl.intrinsics.promote.frag.out b/Test/baseResults/hlsl.intrinsics.promote.frag.out
index 71a17c9..540fe2e 100644
--- a/Test/baseResults/hlsl.intrinsics.promote.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.promote.frag.out
@@ -364,6 +364,8 @@
0:70 'sizeQueryTemp' (temp uint)
0:70 textureSize (temp uint)
0:70 'g_tTex1df4' (uniform texture1D)
+0:70 Constant:
+0:70 0 (const int)
0:70 move second child to first child (temp int)
0:70 'WidthI' (temp int)
0:70 Convert uint to int (temp int)
@@ -808,6 +810,8 @@
0:70 'sizeQueryTemp' (temp uint)
0:70 textureSize (temp uint)
0:70 'g_tTex1df4' (uniform texture1D)
+0:70 Constant:
+0:70 0 (const int)
0:70 move second child to first child (temp int)
0:70 'WidthI' (temp int)
0:70 Convert uint to int (temp int)
@@ -1284,7 +1288,7 @@
276: 6(float) CompositeExtract 275 0
Store 268(r51) 276
281: 278 Load 280(g_tTex1df4)
- 282: 14(int) ImageQuerySize 281
+ 282: 14(int) ImageQuerySizeLod 281 53
Store 277(sizeQueryTemp) 282
284: 15(int) Load 277(sizeQueryTemp)
285: 14(int) Bitcast 284
diff --git a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
index 63d53c2..9ed9831 100644
--- a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
@@ -19,6 +19,8 @@
0:40 'sizeQueryTemp' (temp uint)
0:40 textureSize (temp uint)
0:40 'g_tTex1df4' (uniform texture1D)
+0:40 Constant:
+0:40 0 (const int)
0:40 move second child to first child (temp int)
0:40 'WidthI' (temp int)
0:40 Convert uint to int (temp int)
@@ -121,6 +123,8 @@
0:40 'sizeQueryTemp' (temp uint)
0:40 textureSize (temp uint)
0:40 'g_tTex1df4' (uniform texture1D)
+0:40 Constant:
+0:40 0 (const int)
0:40 move second child to first child (temp int)
0:40 'WidthI' (temp int)
0:40 Convert uint to int (temp int)
@@ -229,14 +233,14 @@
Name 19 ""
Name 28 "sizeQueryTemp"
Name 31 "g_tTex1df4"
- Name 35 "WidthI"
- Name 38 "sizeQueryTemp"
- Name 44 "NumberOfLevelsU"
- Name 47 "sizeQueryTemp"
- Name 50 "WidthU"
- Name 52 "NumberOfLevelsI"
- Name 56 "sizeQueryTemp"
- Name 65 "ps_output"
+ Name 36 "WidthI"
+ Name 39 "sizeQueryTemp"
+ Name 45 "NumberOfLevelsU"
+ Name 48 "sizeQueryTemp"
+ Name 51 "WidthU"
+ Name 53 "NumberOfLevelsI"
+ Name 57 "sizeQueryTemp"
+ Name 66 "ps_output"
Name 74 "color"
Name 80 "g_tTexbfs"
MemberDecorate 17($Global) 0 Offset 0
@@ -276,10 +280,10 @@
29: TypeImage 6(float) 1D sampled format:Unknown
30: TypePointer UniformConstant 29
31(g_tTex1df4): 30(ptr) Variable UniformConstant
- 34: TypePointer Function 12(int)
- 40: 13(int) Constant 6
- 64: TypePointer Function 8(PS_OUTPUT)
- 66: 12(int) Constant 0
+ 33: 12(int) Constant 0
+ 35: TypePointer Function 12(int)
+ 41: 13(int) Constant 6
+ 65: TypePointer Function 8(PS_OUTPUT)
67: 7(fvec4) ConstantComposite 24 24 24 24
68: TypePointer Function 7(fvec4)
73: TypePointer Output 7(fvec4)
@@ -298,53 +302,53 @@
10(@main():8(PS_OUTPUT) Function None 9
11: Label
28(sizeQueryTemp): 27(ptr) Variable Function
- 35(WidthI): 34(ptr) Variable Function
-38(sizeQueryTemp): 27(ptr) Variable Function
-44(NumberOfLevelsU): 27(ptr) Variable Function
-47(sizeQueryTemp): 27(ptr) Variable Function
- 50(WidthU): 27(ptr) Variable Function
-52(NumberOfLevelsI): 34(ptr) Variable Function
-56(sizeQueryTemp): 27(ptr) Variable Function
- 65(ps_output): 64(ptr) Variable Function
+ 36(WidthI): 35(ptr) Variable Function
+39(sizeQueryTemp): 27(ptr) Variable Function
+45(NumberOfLevelsU): 27(ptr) Variable Function
+48(sizeQueryTemp): 27(ptr) Variable Function
+ 51(WidthU): 27(ptr) Variable Function
+53(NumberOfLevelsI): 35(ptr) Variable Function
+57(sizeQueryTemp): 27(ptr) Variable Function
+ 66(ps_output): 65(ptr) Variable Function
22: 21(ptr) AccessChain 19 20
23: 6(float) Load 22
26: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 23 24 25
32: 29 Load 31(g_tTex1df4)
- 33: 12(int) ImageQuerySize 32
- Store 28(sizeQueryTemp) 33
- 36: 13(int) Load 28(sizeQueryTemp)
- 37: 12(int) Bitcast 36
- Store 35(WidthI) 37
- 39: 29 Load 31(g_tTex1df4)
- 41: 12(int) ImageQuerySizeLod 39 40
- Store 38(sizeQueryTemp) 41
- 42: 13(int) Load 38(sizeQueryTemp)
- 43: 12(int) Bitcast 42
- Store 35(WidthI) 43
- 45: 29 Load 31(g_tTex1df4)
- 46: 12(int) ImageQueryLevels 45
- Store 44(NumberOfLevelsU) 46
- 48: 29 Load 31(g_tTex1df4)
- 49: 12(int) ImageQuerySizeLod 48 40
- Store 47(sizeQueryTemp) 49
- 51: 13(int) Load 47(sizeQueryTemp)
- Store 50(WidthU) 51
- 53: 29 Load 31(g_tTex1df4)
- 54: 12(int) ImageQueryLevels 53
- 55: 12(int) Bitcast 54
- Store 52(NumberOfLevelsI) 55
- 57: 29 Load 31(g_tTex1df4)
- 58: 12(int) ImageQuerySizeLod 57 40
- Store 56(sizeQueryTemp) 58
- 59: 13(int) Load 56(sizeQueryTemp)
- 60: 12(int) Bitcast 59
- Store 35(WidthI) 60
- 61: 29 Load 31(g_tTex1df4)
- 62: 12(int) ImageQueryLevels 61
- 63: 12(int) Bitcast 62
- Store 52(NumberOfLevelsI) 63
- 69: 68(ptr) AccessChain 65(ps_output) 66
+ 34: 12(int) ImageQuerySizeLod 32 33
+ Store 28(sizeQueryTemp) 34
+ 37: 13(int) Load 28(sizeQueryTemp)
+ 38: 12(int) Bitcast 37
+ Store 36(WidthI) 38
+ 40: 29 Load 31(g_tTex1df4)
+ 42: 12(int) ImageQuerySizeLod 40 41
+ Store 39(sizeQueryTemp) 42
+ 43: 13(int) Load 39(sizeQueryTemp)
+ 44: 12(int) Bitcast 43
+ Store 36(WidthI) 44
+ 46: 29 Load 31(g_tTex1df4)
+ 47: 12(int) ImageQueryLevels 46
+ Store 45(NumberOfLevelsU) 47
+ 49: 29 Load 31(g_tTex1df4)
+ 50: 12(int) ImageQuerySizeLod 49 41
+ Store 48(sizeQueryTemp) 50
+ 52: 13(int) Load 48(sizeQueryTemp)
+ Store 51(WidthU) 52
+ 54: 29 Load 31(g_tTex1df4)
+ 55: 12(int) ImageQueryLevels 54
+ 56: 12(int) Bitcast 55
+ Store 53(NumberOfLevelsI) 56
+ 58: 29 Load 31(g_tTex1df4)
+ 59: 12(int) ImageQuerySizeLod 58 41
+ Store 57(sizeQueryTemp) 59
+ 60: 13(int) Load 57(sizeQueryTemp)
+ 61: 12(int) Bitcast 60
+ Store 36(WidthI) 61
+ 62: 29 Load 31(g_tTex1df4)
+ 63: 12(int) ImageQueryLevels 62
+ 64: 12(int) Bitcast 63
+ Store 53(NumberOfLevelsI) 64
+ 69: 68(ptr) AccessChain 66(ps_output) 33
Store 69 67
- 70:8(PS_OUTPUT) Load 65(ps_output)
+ 70:8(PS_OUTPUT) Load 66(ps_output)
ReturnValue 70
FunctionEnd
diff --git a/Test/baseResults/hlsl.numericsuffixes.frag.out b/Test/baseResults/hlsl.numericsuffixes.frag.out
index fee6426..3637a2c 100644
--- a/Test/baseResults/hlsl.numericsuffixes.frag.out
+++ b/Test/baseResults/hlsl.numericsuffixes.frag.out
@@ -50,16 +50,36 @@
0:15 'r08' (temp uint)
0:15 Constant:
0:15 58 (const uint)
-0:18 move second child to first child (temp 4-component vector of float)
-0:18 color: direct index for structure (temp 4-component vector of float)
-0:18 'ps_output' (temp structure{temp 4-component vector of float color})
+0:16 Sequence
+0:16 move second child to first child (temp float)
+0:16 'r09' (temp float)
+0:16 Constant:
+0:16 1.000000
+0:17 Sequence
+0:17 move second child to first child (temp float)
+0:17 'r10' (temp float)
+0:17 Constant:
+0:17 1.000000
+0:18 Sequence
+0:18 move second child to first child (temp float)
+0:18 'r11' (temp float)
0:18 Constant:
-0:18 0 (const int)
-0:18 Construct vec4 (temp 4-component vector of float)
-0:18 Convert int to float (temp float)
-0:18 'r07' (temp int)
-0:19 Branch: Return with expression
-0:19 'ps_output' (temp structure{temp 4-component vector of float color})
+0:18 1.100000
+0:19 Sequence
+0:19 move second child to first child (temp float)
+0:19 'r12' (temp float)
+0:19 Constant:
+0:19 1.100000
+0:22 move second child to first child (temp 4-component vector of float)
+0:22 color: direct index for structure (temp 4-component vector of float)
+0:22 'ps_output' (temp structure{temp 4-component vector of float color})
+0:22 Constant:
+0:22 0 (const int)
+0:22 Construct vec4 (temp 4-component vector of float)
+0:22 Convert int to float (temp float)
+0:22 'r07' (temp int)
+0:23 Branch: Return with expression
+0:23 'ps_output' (temp structure{temp 4-component vector of float color})
0:5 Function Definition: main( (temp void)
0:5 Function Parameters:
0:? Sequence
@@ -128,16 +148,36 @@
0:15 'r08' (temp uint)
0:15 Constant:
0:15 58 (const uint)
-0:18 move second child to first child (temp 4-component vector of float)
-0:18 color: direct index for structure (temp 4-component vector of float)
-0:18 'ps_output' (temp structure{temp 4-component vector of float color})
+0:16 Sequence
+0:16 move second child to first child (temp float)
+0:16 'r09' (temp float)
+0:16 Constant:
+0:16 1.000000
+0:17 Sequence
+0:17 move second child to first child (temp float)
+0:17 'r10' (temp float)
+0:17 Constant:
+0:17 1.000000
+0:18 Sequence
+0:18 move second child to first child (temp float)
+0:18 'r11' (temp float)
0:18 Constant:
-0:18 0 (const int)
-0:18 Construct vec4 (temp 4-component vector of float)
-0:18 Convert int to float (temp float)
-0:18 'r07' (temp int)
-0:19 Branch: Return with expression
-0:19 'ps_output' (temp structure{temp 4-component vector of float color})
+0:18 1.100000
+0:19 Sequence
+0:19 move second child to first child (temp float)
+0:19 'r12' (temp float)
+0:19 Constant:
+0:19 1.100000
+0:22 move second child to first child (temp 4-component vector of float)
+0:22 color: direct index for structure (temp 4-component vector of float)
+0:22 'ps_output' (temp structure{temp 4-component vector of float color})
+0:22 Constant:
+0:22 0 (const int)
+0:22 Construct vec4 (temp 4-component vector of float)
+0:22 Convert int to float (temp float)
+0:22 'r07' (temp int)
+0:23 Branch: Return with expression
+0:23 'ps_output' (temp structure{temp 4-component vector of float color})
0:5 Function Definition: main( (temp void)
0:5 Function Parameters:
0:? Sequence
@@ -153,12 +193,12 @@
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 49
+// Id's are bound by 54
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 46
+ EntryPoint Fragment 4 "main" 51
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 8 "PS_OUTPUT"
@@ -173,9 +213,13 @@
Name 28 "r06"
Name 30 "r07"
Name 32 "r08"
- Name 35 "ps_output"
- Name 46 "color"
- Decorate 46(color) Location 0
+ Name 34 "r09"
+ Name 35 "r10"
+ Name 36 "r11"
+ Name 38 "r12"
+ Name 40 "ps_output"
+ Name 51 "color"
+ Decorate 51(color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -195,16 +239,17 @@
29: 24(int) Constant 6
31: 24(int) Constant 57
33: 15(int) Constant 58
- 34: TypePointer Function 8(PS_OUTPUT)
- 36: 24(int) Constant 0
- 40: TypePointer Function 7(fvec4)
- 45: TypePointer Output 7(fvec4)
- 46(color): 45(ptr) Variable Output
+ 37: 6(float) Constant 1066192077
+ 39: TypePointer Function 8(PS_OUTPUT)
+ 41: 24(int) Constant 0
+ 45: TypePointer Function 7(fvec4)
+ 50: TypePointer Output 7(fvec4)
+ 51(color): 50(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 47:8(PS_OUTPUT) FunctionCall 10(@main()
- 48: 7(fvec4) CompositeExtract 47 0
- Store 46(color) 48
+ 52:8(PS_OUTPUT) FunctionCall 10(@main()
+ 53: 7(fvec4) CompositeExtract 52 0
+ Store 51(color) 53
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
@@ -218,7 +263,11 @@
28(r06): 25(ptr) Variable Function
30(r07): 25(ptr) Variable Function
32(r08): 16(ptr) Variable Function
- 35(ps_output): 34(ptr) Variable Function
+ 34(r09): 12(ptr) Variable Function
+ 35(r10): 12(ptr) Variable Function
+ 36(r11): 12(ptr) Variable Function
+ 38(r12): 12(ptr) Variable Function
+ 40(ps_output): 39(ptr) Variable Function
Store 13(r00) 14
Store 17(r01) 18
Store 19(r02) 20
@@ -228,11 +277,15 @@
Store 28(r06) 29
Store 30(r07) 31
Store 32(r08) 33
- 37: 24(int) Load 30(r07)
- 38: 6(float) ConvertSToF 37
- 39: 7(fvec4) CompositeConstruct 38 38 38 38
- 41: 40(ptr) AccessChain 35(ps_output) 36
- Store 41 39
- 42:8(PS_OUTPUT) Load 35(ps_output)
- ReturnValue 42
+ Store 34(r09) 14
+ Store 35(r10) 14
+ Store 36(r11) 37
+ Store 38(r12) 37
+ 42: 24(int) Load 30(r07)
+ 43: 6(float) ConvertSToF 42
+ 44: 7(fvec4) CompositeConstruct 43 43 43 43
+ 46: 45(ptr) AccessChain 40(ps_output) 41
+ Store 46 44
+ 47:8(PS_OUTPUT) Load 40(ps_output)
+ ReturnValue 47
FunctionEnd
diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out
index 8b19c02..1876aee 100755
--- a/Test/baseResults/hlsl.struct.frag.out
+++ b/Test/baseResults/hlsl.struct.frag.out
@@ -6,104 +6,110 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:34 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float)
-0:34 Function Parameters:
-0:34 'input' (in 4-component vector of float)
-0:34 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float)
+0:40 Function Parameters:
+0:40 'input' (in 4-component vector of float)
+0:40 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:? Sequence
-0:39 Compare Equal (temp bool)
-0:39 's3' (temp structure{temp 3-component vector of bool b3})
-0:39 's3' (temp structure{temp 3-component vector of bool b3})
+0:45 Compare Equal (temp bool)
+0:45 's3' (temp structure{temp 3-component vector of bool b3})
+0:45 's3' (temp structure{temp 3-component vector of bool b3})
+0:46 move second child to first child (temp 4-component vector of float)
+0:46 i: direct index for structure (temp 4-component vector of float)
+0:46 's2' (global structure{temp 4-component vector of float i})
+0:46 Constant:
+0:46 0 (const int)
+0:46 ff4: direct index for structure (temp 4-component vector of float)
+0:46 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:46 Constant:
+0:46 7 (const int)
+0:50 move second child to first child (temp structure{})
+0:50 'e' (temp structure{})
+0:50 e: direct index for structure (temp structure{})
+0:50 'ce' (temp structure{temp structure{} e})
+0:50 Constant:
+0:50 0 (const int)
+0:52 Branch: Return with expression
+0:52 'input' (in 4-component vector of float)
+0:40 Function Definition: PixelShaderFunction( (temp void)
+0:40 Function Parameters:
+0:? Sequence
0:40 move second child to first child (temp 4-component vector of float)
-0:40 i: direct index for structure (temp 4-component vector of float)
-0:40 's2' (global structure{temp 4-component vector of float i})
-0:40 Constant:
-0:40 0 (const int)
-0:40 ff4: direct index for structure (temp 4-component vector of float)
-0:40 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 7 (const int)
-0:42 Branch: Return with expression
-0:42 'input' (in 4-component vector of float)
-0:34 Function Definition: PixelShaderFunction( (temp void)
-0:34 Function Parameters:
-0:? Sequence
-0:34 move second child to first child (temp 4-component vector of float)
0:? 'input' (temp 4-component vector of float)
0:? 'input' (layout(location=0 ) in 4-component vector of float)
-0:34 Sequence
-0:34 move second child to first child (temp 4-component vector of float)
-0:34 a: direct index for structure (temp 4-component vector of float)
+0:40 Sequence
+0:40 move second child to first child (temp 4-component vector of float)
+0:40 a: direct index for structure (temp 4-component vector of float)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 0 (const int)
-0:34 a: direct index for structure (smooth temp 4-component vector of float)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 0 (const int)
-0:34 move second child to first child (temp bool)
-0:34 b: direct index for structure (temp bool)
+0:40 Constant:
+0:40 0 (const int)
+0:40 a: direct index for structure (smooth temp 4-component vector of float)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 0 (const int)
+0:40 move second child to first child (temp bool)
+0:40 b: direct index for structure (temp bool)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 1 (const int)
-0:34 b: direct index for structure (flat temp bool)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 1 (const int)
-0:34 move second child to first child (temp 1-component vector of float)
-0:34 c: direct index for structure (temp 1-component vector of float)
+0:40 Constant:
+0:40 1 (const int)
+0:40 b: direct index for structure (flat temp bool)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 1 (const int)
+0:40 move second child to first child (temp 1-component vector of float)
+0:40 c: direct index for structure (temp 1-component vector of float)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 2 (const int)
-0:34 c: direct index for structure (centroid noperspective temp 1-component vector of float)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 2 (const int)
-0:34 move second child to first child (temp 2-component vector of float)
-0:34 d: direct index for structure (temp 2-component vector of float)
+0:40 Constant:
+0:40 2 (const int)
+0:40 c: direct index for structure (centroid noperspective temp 1-component vector of float)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 2 (const int)
+0:40 move second child to first child (temp 2-component vector of float)
+0:40 d: direct index for structure (temp 2-component vector of float)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 3 (const int)
-0:34 d: direct index for structure (centroid sample temp 2-component vector of float)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 3 (const int)
-0:34 move second child to first child (temp bool)
-0:34 ff1: direct index for structure (temp bool)
+0:40 Constant:
+0:40 3 (const int)
+0:40 d: direct index for structure (centroid sample temp 2-component vector of float)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 3 (const int)
+0:40 move second child to first child (temp bool)
+0:40 ff1: direct index for structure (temp bool)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 4 (const int)
+0:40 Constant:
+0:40 4 (const int)
0:? 's_ff1' (in bool Face)
-0:34 move second child to first child (temp bool)
-0:34 ff2: direct index for structure (temp bool)
+0:40 move second child to first child (temp bool)
+0:40 ff2: direct index for structure (temp bool)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 5 (const int)
-0:34 ff2: direct index for structure (temp bool)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 4 (const int)
-0:34 move second child to first child (temp bool)
-0:34 ff3: direct index for structure (temp bool)
+0:40 Constant:
+0:40 5 (const int)
+0:40 ff2: direct index for structure (temp bool)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 4 (const int)
+0:40 move second child to first child (temp bool)
+0:40 ff3: direct index for structure (temp bool)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 6 (const int)
-0:34 ff3: direct index for structure (temp bool)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 5 (const int)
-0:34 move second child to first child (temp 4-component vector of float)
-0:34 ff4: direct index for structure (temp 4-component vector of float)
+0:40 Constant:
+0:40 6 (const int)
+0:40 ff3: direct index for structure (temp bool)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 5 (const int)
+0:40 move second child to first child (temp 4-component vector of float)
+0:40 ff4: direct index for structure (temp 4-component vector of float)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 7 (const int)
-0:34 ff4: direct index for structure (temp 4-component vector of float)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 6 (const int)
-0:34 move second child to first child (temp 4-component vector of float)
+0:40 Constant:
+0:40 7 (const int)
+0:40 ff4: direct index for structure (temp 4-component vector of float)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 6 (const int)
+0:40 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:34 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float)
+0:40 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float)
0:? 'input' (temp 4-component vector of float)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:? Linker Objects
@@ -121,104 +127,110 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:34 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float)
-0:34 Function Parameters:
-0:34 'input' (in 4-component vector of float)
-0:34 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float)
+0:40 Function Parameters:
+0:40 'input' (in 4-component vector of float)
+0:40 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:? Sequence
-0:39 Compare Equal (temp bool)
-0:39 's3' (temp structure{temp 3-component vector of bool b3})
-0:39 's3' (temp structure{temp 3-component vector of bool b3})
+0:45 Compare Equal (temp bool)
+0:45 's3' (temp structure{temp 3-component vector of bool b3})
+0:45 's3' (temp structure{temp 3-component vector of bool b3})
+0:46 move second child to first child (temp 4-component vector of float)
+0:46 i: direct index for structure (temp 4-component vector of float)
+0:46 's2' (global structure{temp 4-component vector of float i})
+0:46 Constant:
+0:46 0 (const int)
+0:46 ff4: direct index for structure (temp 4-component vector of float)
+0:46 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:46 Constant:
+0:46 7 (const int)
+0:50 move second child to first child (temp structure{})
+0:50 'e' (temp structure{})
+0:50 e: direct index for structure (temp structure{})
+0:50 'ce' (temp structure{temp structure{} e})
+0:50 Constant:
+0:50 0 (const int)
+0:52 Branch: Return with expression
+0:52 'input' (in 4-component vector of float)
+0:40 Function Definition: PixelShaderFunction( (temp void)
+0:40 Function Parameters:
+0:? Sequence
0:40 move second child to first child (temp 4-component vector of float)
-0:40 i: direct index for structure (temp 4-component vector of float)
-0:40 's2' (global structure{temp 4-component vector of float i})
-0:40 Constant:
-0:40 0 (const int)
-0:40 ff4: direct index for structure (temp 4-component vector of float)
-0:40 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:40 Constant:
-0:40 7 (const int)
-0:42 Branch: Return with expression
-0:42 'input' (in 4-component vector of float)
-0:34 Function Definition: PixelShaderFunction( (temp void)
-0:34 Function Parameters:
-0:? Sequence
-0:34 move second child to first child (temp 4-component vector of float)
0:? 'input' (temp 4-component vector of float)
0:? 'input' (layout(location=0 ) in 4-component vector of float)
-0:34 Sequence
-0:34 move second child to first child (temp 4-component vector of float)
-0:34 a: direct index for structure (temp 4-component vector of float)
+0:40 Sequence
+0:40 move second child to first child (temp 4-component vector of float)
+0:40 a: direct index for structure (temp 4-component vector of float)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 0 (const int)
-0:34 a: direct index for structure (smooth temp 4-component vector of float)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 0 (const int)
-0:34 move second child to first child (temp bool)
-0:34 b: direct index for structure (temp bool)
+0:40 Constant:
+0:40 0 (const int)
+0:40 a: direct index for structure (smooth temp 4-component vector of float)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 0 (const int)
+0:40 move second child to first child (temp bool)
+0:40 b: direct index for structure (temp bool)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 1 (const int)
-0:34 b: direct index for structure (flat temp bool)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 1 (const int)
-0:34 move second child to first child (temp 1-component vector of float)
-0:34 c: direct index for structure (temp 1-component vector of float)
+0:40 Constant:
+0:40 1 (const int)
+0:40 b: direct index for structure (flat temp bool)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 1 (const int)
+0:40 move second child to first child (temp 1-component vector of float)
+0:40 c: direct index for structure (temp 1-component vector of float)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 2 (const int)
-0:34 c: direct index for structure (centroid noperspective temp 1-component vector of float)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 2 (const int)
-0:34 move second child to first child (temp 2-component vector of float)
-0:34 d: direct index for structure (temp 2-component vector of float)
+0:40 Constant:
+0:40 2 (const int)
+0:40 c: direct index for structure (centroid noperspective temp 1-component vector of float)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 2 (const int)
+0:40 move second child to first child (temp 2-component vector of float)
+0:40 d: direct index for structure (temp 2-component vector of float)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 3 (const int)
-0:34 d: direct index for structure (centroid sample temp 2-component vector of float)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 3 (const int)
-0:34 move second child to first child (temp bool)
-0:34 ff1: direct index for structure (temp bool)
+0:40 Constant:
+0:40 3 (const int)
+0:40 d: direct index for structure (centroid sample temp 2-component vector of float)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 3 (const int)
+0:40 move second child to first child (temp bool)
+0:40 ff1: direct index for structure (temp bool)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 4 (const int)
+0:40 Constant:
+0:40 4 (const int)
0:? 's_ff1' (in bool Face)
-0:34 move second child to first child (temp bool)
-0:34 ff2: direct index for structure (temp bool)
+0:40 move second child to first child (temp bool)
+0:40 ff2: direct index for structure (temp bool)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 5 (const int)
-0:34 ff2: direct index for structure (temp bool)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 4 (const int)
-0:34 move second child to first child (temp bool)
-0:34 ff3: direct index for structure (temp bool)
+0:40 Constant:
+0:40 5 (const int)
+0:40 ff2: direct index for structure (temp bool)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 4 (const int)
+0:40 move second child to first child (temp bool)
+0:40 ff3: direct index for structure (temp bool)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 6 (const int)
-0:34 ff3: direct index for structure (temp bool)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 5 (const int)
-0:34 move second child to first child (temp 4-component vector of float)
-0:34 ff4: direct index for structure (temp 4-component vector of float)
+0:40 Constant:
+0:40 6 (const int)
+0:40 ff3: direct index for structure (temp bool)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 5 (const int)
+0:40 move second child to first child (temp 4-component vector of float)
+0:40 ff4: direct index for structure (temp 4-component vector of float)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 7 (const int)
-0:34 ff4: direct index for structure (temp 4-component vector of float)
-0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
-0:34 Constant:
-0:34 6 (const int)
-0:34 move second child to first child (temp 4-component vector of float)
+0:40 Constant:
+0:40 7 (const int)
+0:40 ff4: direct index for structure (temp 4-component vector of float)
+0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
+0:40 Constant:
+0:40 6 (const int)
+0:40 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:34 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float)
+0:40 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float)
0:? 'input' (temp 4-component vector of float)
0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:? Linker Objects
@@ -231,12 +243,12 @@
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 97
+// Id's are bound by 105
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 43 48 71 86
+ EntryPoint Fragment 4 "PixelShaderFunction" 51 56 79 94
ExecutionMode 4 OriginUpperLeft
Name 4 "PixelShaderFunction"
Name 11 "IN_S"
@@ -257,49 +269,54 @@
Name 28 ""
MemberName 28 0 "i"
Name 30 "s2"
- Name 41 "input"
- Name 43 "input"
- Name 45 "s"
- Name 46 "IN_S"
- MemberName 46(IN_S) 0 "a"
- MemberName 46(IN_S) 1 "b"
- MemberName 46(IN_S) 2 "c"
- MemberName 46(IN_S) 3 "d"
- MemberName 46(IN_S) 4 "ff2"
- MemberName 46(IN_S) 5 "ff3"
- MemberName 46(IN_S) 6 "ff4"
- Name 48 "s"
- Name 71 "s_ff1"
- Name 86 "@entryPointOutput"
- Name 87 "param"
- Name 89 "param"
- Name 93 "myS"
- MemberName 93(myS) 0 "b"
- MemberName 93(myS) 1 "c"
- MemberName 93(myS) 2 "a"
- MemberName 93(myS) 3 "d"
- Name 94 "$Global"
- MemberName 94($Global) 0 "s1"
- MemberName 94($Global) 1 "ff5"
- MemberName 94($Global) 2 "ff6"
- Name 96 ""
- Decorate 43(input) Location 0
- MemberDecorate 46(IN_S) 1 Flat
- MemberDecorate 46(IN_S) 2 NoPerspective
- MemberDecorate 46(IN_S) 2 Centroid
- MemberDecorate 46(IN_S) 3 Centroid
- Decorate 48(s) Location 1
- Decorate 71(s_ff1) BuiltIn FrontFacing
- Decorate 86(@entryPointOutput) Location 0
- MemberDecorate 93(myS) 0 Offset 0
- MemberDecorate 93(myS) 1 Offset 4
- MemberDecorate 93(myS) 2 Offset 16
- MemberDecorate 93(myS) 3 Offset 32
- MemberDecorate 94($Global) 0 Offset 0
- MemberDecorate 94($Global) 1 Offset 1620
- MemberDecorate 94($Global) 2 Offset 1636
- Decorate 94($Global) Block
- Decorate 96 DescriptorSet 0
+ Name 38 "empty"
+ Name 40 "e"
+ Name 41 "containEmpty"
+ MemberName 41(containEmpty) 0 "e"
+ Name 43 "ce"
+ Name 49 "input"
+ Name 51 "input"
+ Name 53 "s"
+ Name 54 "IN_S"
+ MemberName 54(IN_S) 0 "a"
+ MemberName 54(IN_S) 1 "b"
+ MemberName 54(IN_S) 2 "c"
+ MemberName 54(IN_S) 3 "d"
+ MemberName 54(IN_S) 4 "ff2"
+ MemberName 54(IN_S) 5 "ff3"
+ MemberName 54(IN_S) 6 "ff4"
+ Name 56 "s"
+ Name 79 "s_ff1"
+ Name 94 "@entryPointOutput"
+ Name 95 "param"
+ Name 97 "param"
+ Name 101 "myS"
+ MemberName 101(myS) 0 "b"
+ MemberName 101(myS) 1 "c"
+ MemberName 101(myS) 2 "a"
+ MemberName 101(myS) 3 "d"
+ Name 102 "$Global"
+ MemberName 102($Global) 0 "s1"
+ MemberName 102($Global) 1 "ff5"
+ MemberName 102($Global) 2 "ff6"
+ Name 104 ""
+ Decorate 51(input) Location 0
+ MemberDecorate 54(IN_S) 1 Flat
+ MemberDecorate 54(IN_S) 2 NoPerspective
+ MemberDecorate 54(IN_S) 2 Centroid
+ MemberDecorate 54(IN_S) 3 Centroid
+ Decorate 56(s) Location 1
+ Decorate 79(s_ff1) BuiltIn FrontFacing
+ Decorate 94(@entryPointOutput) Location 0
+ MemberDecorate 101(myS) 0 Offset 0
+ MemberDecorate 101(myS) 1 Offset 4
+ MemberDecorate 101(myS) 2 Offset 16
+ MemberDecorate 101(myS) 3 Offset 32
+ MemberDecorate 102($Global) 0 Offset 0
+ MemberDecorate 102($Global) 1 Offset 1620
+ MemberDecorate 102($Global) 2 Offset 1636
+ Decorate 102($Global) Block
+ Decorate 104 DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -320,76 +337,80 @@
32: 31(int) Constant 0
33: 31(int) Constant 7
36: TypePointer Private 7(fvec4)
- 42: TypePointer Input 7(fvec4)
- 43(input): 42(ptr) Variable Input
- 46(IN_S): TypeStruct 7(fvec4) 9(bool) 6(float) 10(fvec2) 9(bool) 9(bool) 7(fvec4)
- 47: TypePointer Input 46(IN_S)
- 48(s): 47(ptr) Variable Input
- 52: 31(int) Constant 1
- 53: TypePointer Input 9(bool)
- 56: TypePointer Function 9(bool)
- 58: 31(int) Constant 2
- 59: TypePointer Input 6(float)
- 62: TypePointer Function 6(float)
- 64: 31(int) Constant 3
- 65: TypePointer Input 10(fvec2)
- 68: TypePointer Function 10(fvec2)
- 70: 31(int) Constant 4
- 71(s_ff1): 53(ptr) Variable Input
- 74: 31(int) Constant 5
- 78: 31(int) Constant 6
- 85: TypePointer Output 7(fvec4)
-86(@entryPointOutput): 85(ptr) Variable Output
- 92: TypeInt 32 0
- 93(myS): TypeStruct 92(int) 92(int) 7(fvec4) 7(fvec4)
- 94($Global): TypeStruct 93(myS) 6(float) 6(float)
- 95: TypePointer Uniform 94($Global)
- 96: 95(ptr) Variable Uniform
+ 38(empty): TypeStruct
+ 39: TypePointer Function 38(empty)
+41(containEmpty): TypeStruct 38(empty)
+ 42: TypePointer Function 41(containEmpty)
+ 50: TypePointer Input 7(fvec4)
+ 51(input): 50(ptr) Variable Input
+ 54(IN_S): TypeStruct 7(fvec4) 9(bool) 6(float) 10(fvec2) 9(bool) 9(bool) 7(fvec4)
+ 55: TypePointer Input 54(IN_S)
+ 56(s): 55(ptr) Variable Input
+ 60: 31(int) Constant 1
+ 61: TypePointer Input 9(bool)
+ 64: TypePointer Function 9(bool)
+ 66: 31(int) Constant 2
+ 67: TypePointer Input 6(float)
+ 70: TypePointer Function 6(float)
+ 72: 31(int) Constant 3
+ 73: TypePointer Input 10(fvec2)
+ 76: TypePointer Function 10(fvec2)
+ 78: 31(int) Constant 4
+ 79(s_ff1): 61(ptr) Variable Input
+ 82: 31(int) Constant 5
+ 86: 31(int) Constant 6
+ 93: TypePointer Output 7(fvec4)
+94(@entryPointOutput): 93(ptr) Variable Output
+ 100: TypeInt 32 0
+ 101(myS): TypeStruct 100(int) 100(int) 7(fvec4) 7(fvec4)
+ 102($Global): TypeStruct 101(myS) 6(float) 6(float)
+ 103: TypePointer Uniform 102($Global)
+ 104: 103(ptr) Variable Uniform
4(PixelShaderFunction): 2 Function None 3
5: Label
- 41(input): 8(ptr) Variable Function
- 45(s): 12(ptr) Variable Function
- 87(param): 8(ptr) Variable Function
- 89(param): 12(ptr) Variable Function
- 44: 7(fvec4) Load 43(input)
- Store 41(input) 44
- 49: 42(ptr) AccessChain 48(s) 32
- 50: 7(fvec4) Load 49
- 51: 8(ptr) AccessChain 45(s) 32
- Store 51 50
- 54: 53(ptr) AccessChain 48(s) 52
- 55: 9(bool) Load 54
- 57: 56(ptr) AccessChain 45(s) 52
- Store 57 55
- 60: 59(ptr) AccessChain 48(s) 58
- 61: 6(float) Load 60
- 63: 62(ptr) AccessChain 45(s) 58
- Store 63 61
- 66: 65(ptr) AccessChain 48(s) 64
- 67: 10(fvec2) Load 66
- 69: 68(ptr) AccessChain 45(s) 64
- Store 69 67
- 72: 9(bool) Load 71(s_ff1)
- 73: 56(ptr) AccessChain 45(s) 70
- Store 73 72
- 75: 53(ptr) AccessChain 48(s) 70
- 76: 9(bool) Load 75
- 77: 56(ptr) AccessChain 45(s) 74
- Store 77 76
- 79: 53(ptr) AccessChain 48(s) 74
- 80: 9(bool) Load 79
- 81: 56(ptr) AccessChain 45(s) 78
+ 49(input): 8(ptr) Variable Function
+ 53(s): 12(ptr) Variable Function
+ 95(param): 8(ptr) Variable Function
+ 97(param): 12(ptr) Variable Function
+ 52: 7(fvec4) Load 51(input)
+ Store 49(input) 52
+ 57: 50(ptr) AccessChain 56(s) 32
+ 58: 7(fvec4) Load 57
+ 59: 8(ptr) AccessChain 53(s) 32
+ Store 59 58
+ 62: 61(ptr) AccessChain 56(s) 60
+ 63: 9(bool) Load 62
+ 65: 64(ptr) AccessChain 53(s) 60
+ Store 65 63
+ 68: 67(ptr) AccessChain 56(s) 66
+ 69: 6(float) Load 68
+ 71: 70(ptr) AccessChain 53(s) 66
+ Store 71 69
+ 74: 73(ptr) AccessChain 56(s) 72
+ 75: 10(fvec2) Load 74
+ 77: 76(ptr) AccessChain 53(s) 72
+ Store 77 75
+ 80: 9(bool) Load 79(s_ff1)
+ 81: 64(ptr) AccessChain 53(s) 78
Store 81 80
- 82: 42(ptr) AccessChain 48(s) 78
- 83: 7(fvec4) Load 82
- 84: 8(ptr) AccessChain 45(s) 33
- Store 84 83
- 88: 7(fvec4) Load 41(input)
- Store 87(param) 88
- 90: 11(IN_S) Load 45(s)
- Store 89(param) 90
- 91: 7(fvec4) FunctionCall 16(@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;) 87(param) 89(param)
- Store 86(@entryPointOutput) 91
+ 83: 61(ptr) AccessChain 56(s) 78
+ 84: 9(bool) Load 83
+ 85: 64(ptr) AccessChain 53(s) 82
+ Store 85 84
+ 87: 61(ptr) AccessChain 56(s) 82
+ 88: 9(bool) Load 87
+ 89: 64(ptr) AccessChain 53(s) 86
+ Store 89 88
+ 90: 50(ptr) AccessChain 56(s) 86
+ 91: 7(fvec4) Load 90
+ 92: 8(ptr) AccessChain 53(s) 33
+ Store 92 91
+ 96: 7(fvec4) Load 49(input)
+ Store 95(param) 96
+ 98: 11(IN_S) Load 53(s)
+ Store 97(param) 98
+ 99: 7(fvec4) FunctionCall 16(@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;) 95(param) 97(param)
+ Store 94(@entryPointOutput) 99
Return
FunctionEnd
16(@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;): 7(fvec4) Function None 13
@@ -397,6 +418,8 @@
15(s): 12(ptr) FunctionParameter
17: Label
21(s3): 20(ptr) Variable Function
+ 40(e): 39(ptr) Variable Function
+ 43(ce): 42(ptr) Variable Function
22: 19(FS) Load 21(s3)
23: 19(FS) Load 21(s3)
24: 18(bvec3) CompositeExtract 22 0
@@ -407,6 +430,9 @@
35: 7(fvec4) Load 34
37: 36(ptr) AccessChain 30(s2) 32
Store 37 35
- 38: 7(fvec4) Load 14(input)
- ReturnValue 38
+ 44: 39(ptr) AccessChain 43(ce) 32
+ 45: 38(empty) Load 44
+ Store 40(e) 45
+ 46: 7(fvec4) Load 14(input)
+ ReturnValue 46
FunctionEnd
diff --git a/Test/baseResults/hlsl.structStructName.frag.out b/Test/baseResults/hlsl.structStructName.frag.out
new file mode 100755
index 0000000..da4c400
--- /dev/null
+++ b/Test/baseResults/hlsl.structStructName.frag.out
@@ -0,0 +1,84 @@
+hlsl.structStructName.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: @main( (temp int)
+0:4 Function Parameters:
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 s: direct index for structure (temp int)
+0:6 't' (temp structure{temp int s})
+0:6 Constant:
+0:6 0 (const int)
+0:4 Function Definition: main( (temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child (temp int)
+0:? '@entryPointOutput' (layout(location=0 ) out int)
+0:4 Function Call: @main( (temp int)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out int)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: @main( (temp int)
+0:4 Function Parameters:
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 s: direct index for structure (temp int)
+0:6 't' (temp structure{temp int s})
+0:6 Constant:
+0:6 0 (const int)
+0:4 Function Definition: main( (temp void)
+0:4 Function Parameters:
+0:? Sequence
+0:4 move second child to first child (temp int)
+0:? '@entryPointOutput' (layout(location=0 ) out int)
+0:4 Function Call: @main( (temp int)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out int)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 22
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 20
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "main"
+ Name 8 "@main("
+ Name 10 "S"
+ MemberName 10(S) 0 "s"
+ Name 12 "t"
+ Name 20 "@entryPointOutput"
+ Decorate 20(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypeFunction 6(int)
+ 10(S): TypeStruct 6(int)
+ 11: TypePointer Function 10(S)
+ 13: 6(int) Constant 0
+ 14: TypePointer Function 6(int)
+ 19: TypePointer Output 6(int)
+20(@entryPointOutput): 19(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 21: 6(int) FunctionCall 8(@main()
+ Store 20(@entryPointOutput) 21
+ Return
+ FunctionEnd
+ 8(@main(): 6(int) Function None 7
+ 9: Label
+ 12(t): 11(ptr) Variable Function
+ 15: 14(ptr) AccessChain 12(t) 13
+ 16: 6(int) Load 15
+ ReturnValue 16
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.structbuffer.atomics.frag.out b/Test/baseResults/hlsl.structbuffer.atomics.frag.out
index 7f20d5f..ffa2d82 100644
--- a/Test/baseResults/hlsl.structbuffer.atomics.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.atomics.frag.out
@@ -8,8 +8,8 @@
0:? Sequence
0:8 AtomicAdd (temp void)
0:8 indirect index (layout(row_major std430 ) buffer uint)
-0:8 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:8 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:8 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:8 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:8 Constant:
0:8 0 (const uint)
0:8 right-shift (temp int)
@@ -23,8 +23,8 @@
0:9 'u' (temp uint)
0:9 AtomicAdd (temp uint)
0:9 indirect index (layout(row_major std430 ) buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
@@ -36,8 +36,8 @@
0:9 1 (const int)
0:10 AtomicAnd (temp void)
0:10 indirect index (layout(row_major std430 ) buffer uint)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 right-shift (temp int)
@@ -51,8 +51,8 @@
0:11 'u' (temp uint)
0:11 AtomicAnd (temp uint)
0:11 indirect index (layout(row_major std430 ) buffer uint)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 right-shift (temp int)
@@ -67,8 +67,8 @@
0:12 Convert int to uint (temp uint)
0:12 AtomicCompSwap (temp int)
0:12 indirect index (layout(row_major std430 ) buffer uint)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 right-shift (temp int)
@@ -84,8 +84,8 @@
0:14 'u' (temp uint)
0:14 AtomicExchange (temp uint)
0:14 indirect index (layout(row_major std430 ) buffer uint)
-0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:14 Constant:
0:14 0 (const uint)
0:14 right-shift (temp int)
@@ -97,8 +97,8 @@
0:14 1 (const int)
0:15 AtomicMax (temp void)
0:15 indirect index (layout(row_major std430 ) buffer uint)
-0:15 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:15 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:15 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:15 Constant:
0:15 0 (const uint)
0:15 right-shift (temp int)
@@ -112,8 +112,8 @@
0:16 'u' (temp uint)
0:16 AtomicMax (temp uint)
0:16 indirect index (layout(row_major std430 ) buffer uint)
-0:16 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:16 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:16 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:16 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:16 Constant:
0:16 0 (const uint)
0:16 right-shift (temp int)
@@ -125,8 +125,8 @@
0:16 1 (const int)
0:17 AtomicMin (temp void)
0:17 indirect index (layout(row_major std430 ) buffer uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:17 Constant:
0:17 0 (const uint)
0:17 right-shift (temp int)
@@ -140,8 +140,8 @@
0:18 'u' (temp uint)
0:18 AtomicMin (temp uint)
0:18 indirect index (layout(row_major std430 ) buffer uint)
-0:18 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:18 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:18 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:18 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:18 Constant:
0:18 0 (const uint)
0:18 right-shift (temp int)
@@ -153,8 +153,8 @@
0:18 1 (const int)
0:19 AtomicOr (temp void)
0:19 indirect index (layout(row_major std430 ) buffer uint)
-0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:19 Constant:
0:19 0 (const uint)
0:19 right-shift (temp int)
@@ -168,8 +168,8 @@
0:20 'u' (temp uint)
0:20 AtomicOr (temp uint)
0:20 indirect index (layout(row_major std430 ) buffer uint)
-0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:20 Constant:
0:20 0 (const uint)
0:20 right-shift (temp int)
@@ -181,8 +181,8 @@
0:20 1 (const int)
0:21 AtomicXor (temp void)
0:21 indirect index (layout(row_major std430 ) buffer uint)
-0:21 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:21 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:21 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:21 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:21 Constant:
0:21 0 (const uint)
0:21 right-shift (temp int)
@@ -196,8 +196,8 @@
0:22 'u' (temp uint)
0:22 AtomicXor (temp uint)
0:22 indirect index (layout(row_major std430 ) buffer uint)
-0:22 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:22 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:22 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:22 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:22 Constant:
0:22 0 (const uint)
0:22 right-shift (temp int)
@@ -211,8 +211,8 @@
0:24 Construct vec4 (temp 4-component vector of float)
0:24 Convert uint to float (temp float)
0:24 indirect index (layout(row_major std430 ) buffer uint)
-0:24 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:24 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:24 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:24 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:24 Constant:
0:24 0 (const uint)
0:24 right-shift (temp int)
@@ -230,7 +230,7 @@
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -247,8 +247,8 @@
0:? Sequence
0:8 AtomicAdd (temp void)
0:8 indirect index (layout(row_major std430 ) buffer uint)
-0:8 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:8 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:8 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:8 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:8 Constant:
0:8 0 (const uint)
0:8 right-shift (temp int)
@@ -262,8 +262,8 @@
0:9 'u' (temp uint)
0:9 AtomicAdd (temp uint)
0:9 indirect index (layout(row_major std430 ) buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
@@ -275,8 +275,8 @@
0:9 1 (const int)
0:10 AtomicAnd (temp void)
0:10 indirect index (layout(row_major std430 ) buffer uint)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 right-shift (temp int)
@@ -290,8 +290,8 @@
0:11 'u' (temp uint)
0:11 AtomicAnd (temp uint)
0:11 indirect index (layout(row_major std430 ) buffer uint)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 right-shift (temp int)
@@ -306,8 +306,8 @@
0:12 Convert int to uint (temp uint)
0:12 AtomicCompSwap (temp int)
0:12 indirect index (layout(row_major std430 ) buffer uint)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 right-shift (temp int)
@@ -323,8 +323,8 @@
0:14 'u' (temp uint)
0:14 AtomicExchange (temp uint)
0:14 indirect index (layout(row_major std430 ) buffer uint)
-0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:14 Constant:
0:14 0 (const uint)
0:14 right-shift (temp int)
@@ -336,8 +336,8 @@
0:14 1 (const int)
0:15 AtomicMax (temp void)
0:15 indirect index (layout(row_major std430 ) buffer uint)
-0:15 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:15 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:15 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:15 Constant:
0:15 0 (const uint)
0:15 right-shift (temp int)
@@ -351,8 +351,8 @@
0:16 'u' (temp uint)
0:16 AtomicMax (temp uint)
0:16 indirect index (layout(row_major std430 ) buffer uint)
-0:16 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:16 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:16 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:16 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:16 Constant:
0:16 0 (const uint)
0:16 right-shift (temp int)
@@ -364,8 +364,8 @@
0:16 1 (const int)
0:17 AtomicMin (temp void)
0:17 indirect index (layout(row_major std430 ) buffer uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:17 Constant:
0:17 0 (const uint)
0:17 right-shift (temp int)
@@ -379,8 +379,8 @@
0:18 'u' (temp uint)
0:18 AtomicMin (temp uint)
0:18 indirect index (layout(row_major std430 ) buffer uint)
-0:18 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:18 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:18 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:18 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:18 Constant:
0:18 0 (const uint)
0:18 right-shift (temp int)
@@ -392,8 +392,8 @@
0:18 1 (const int)
0:19 AtomicOr (temp void)
0:19 indirect index (layout(row_major std430 ) buffer uint)
-0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:19 Constant:
0:19 0 (const uint)
0:19 right-shift (temp int)
@@ -407,8 +407,8 @@
0:20 'u' (temp uint)
0:20 AtomicOr (temp uint)
0:20 indirect index (layout(row_major std430 ) buffer uint)
-0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:20 Constant:
0:20 0 (const uint)
0:20 right-shift (temp int)
@@ -420,8 +420,8 @@
0:20 1 (const int)
0:21 AtomicXor (temp void)
0:21 indirect index (layout(row_major std430 ) buffer uint)
-0:21 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:21 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:21 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:21 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:21 Constant:
0:21 0 (const uint)
0:21 right-shift (temp int)
@@ -435,8 +435,8 @@
0:22 'u' (temp uint)
0:22 AtomicXor (temp uint)
0:22 indirect index (layout(row_major std430 ) buffer uint)
-0:22 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:22 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:22 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:22 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:22 Constant:
0:22 0 (const uint)
0:22 right-shift (temp int)
@@ -450,8 +450,8 @@
0:24 Construct vec4 (temp 4-component vector of float)
0:24 Convert uint to float (temp float)
0:24 indirect index (layout(row_major std430 ) buffer uint)
-0:24 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:24 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:24 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:24 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:24 Constant:
0:24 0 (const uint)
0:24 right-shift (temp int)
@@ -469,7 +469,7 @@
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -486,8 +486,8 @@
Name 12 "@main(u1;"
Name 11 "pos"
Name 15 "sbuf"
- MemberName 15(sbuf) 0 "sbuf"
- Name 17 ""
+ MemberName 15(sbuf) 0 "@data"
+ Name 17 "sbuf"
Name 29 "u"
Name 78 "pos"
Name 80 "pos"
@@ -496,7 +496,7 @@
Decorate 14 ArrayStride 4
MemberDecorate 15(sbuf) 0 Offset 0
Decorate 15(sbuf) BufferBlock
- Decorate 17 DescriptorSet 0
+ Decorate 17(sbuf) DescriptorSet 0
Decorate 80(pos) Location 0
Decorate 83(@entryPointOutput) Location 0
2: TypeVoid
@@ -509,7 +509,7 @@
14: TypeRuntimeArray 6(int)
15(sbuf): TypeStruct 14
16: TypePointer Uniform 15(sbuf)
- 17: 16(ptr) Variable Uniform
+ 17(sbuf): 16(ptr) Variable Uniform
18: TypeInt 32 1
19: 18(int) Constant 0
20: 18(int) Constant 8
@@ -539,59 +539,59 @@
13: Label
29(u): 7(ptr) Variable Function
22: 18(int) ShiftRightArithmetic 20 21
- 24: 23(ptr) AccessChain 17 19 22
+ 24: 23(ptr) AccessChain 17(sbuf) 19 22
28: 2 AtomicIAdd 24 26 27 25
30: 18(int) ShiftRightArithmetic 20 21
- 31: 23(ptr) AccessChain 17 19 30
+ 31: 23(ptr) AccessChain 17(sbuf) 19 30
32: 6(int) AtomicIAdd 31 26 27 25
Store 29(u) 32
33: 18(int) ShiftRightArithmetic 20 21
- 34: 23(ptr) AccessChain 17 19 33
+ 34: 23(ptr) AccessChain 17(sbuf) 19 33
35: 2 AtomicAnd 34 26 27 25
36: 18(int) ShiftRightArithmetic 20 21
- 37: 23(ptr) AccessChain 17 19 36
+ 37: 23(ptr) AccessChain 17(sbuf) 19 36
38: 6(int) AtomicAnd 37 26 27 25
Store 29(u) 38
39: 18(int) ShiftRightArithmetic 20 21
- 40: 23(ptr) AccessChain 17 19 39
+ 40: 23(ptr) AccessChain 17(sbuf) 19 39
41: 18(int) AtomicCompareExchange 40 26 27 27 21 25
42: 6(int) Bitcast 41
Store 29(u) 42
43: 18(int) ShiftRightArithmetic 20 21
- 44: 23(ptr) AccessChain 17 19 43
+ 44: 23(ptr) AccessChain 17(sbuf) 19 43
45: 6(int) AtomicExchange 44 26 27 25
Store 29(u) 45
46: 18(int) ShiftRightArithmetic 20 21
- 47: 23(ptr) AccessChain 17 19 46
+ 47: 23(ptr) AccessChain 17(sbuf) 19 46
48: 2 AtomicSMax 47 26 27 25
49: 18(int) ShiftRightArithmetic 20 21
- 50: 23(ptr) AccessChain 17 19 49
+ 50: 23(ptr) AccessChain 17(sbuf) 19 49
51: 6(int) AtomicUMax 50 26 27 25
Store 29(u) 51
52: 18(int) ShiftRightArithmetic 20 21
- 53: 23(ptr) AccessChain 17 19 52
+ 53: 23(ptr) AccessChain 17(sbuf) 19 52
54: 2 AtomicSMin 53 26 27 25
55: 18(int) ShiftRightArithmetic 20 21
- 56: 23(ptr) AccessChain 17 19 55
+ 56: 23(ptr) AccessChain 17(sbuf) 19 55
57: 6(int) AtomicUMin 56 26 27 25
Store 29(u) 57
58: 18(int) ShiftRightArithmetic 20 21
- 59: 23(ptr) AccessChain 17 19 58
+ 59: 23(ptr) AccessChain 17(sbuf) 19 58
60: 2 AtomicOr 59 26 27 25
61: 18(int) ShiftRightArithmetic 20 21
- 62: 23(ptr) AccessChain 17 19 61
+ 62: 23(ptr) AccessChain 17(sbuf) 19 61
63: 6(int) AtomicOr 62 26 27 25
Store 29(u) 63
64: 18(int) ShiftRightArithmetic 20 21
- 65: 23(ptr) AccessChain 17 19 64
+ 65: 23(ptr) AccessChain 17(sbuf) 19 64
66: 2 AtomicXor 65 26 27 25
67: 18(int) ShiftRightArithmetic 20 21
- 68: 23(ptr) AccessChain 17 19 67
+ 68: 23(ptr) AccessChain 17(sbuf) 19 67
69: 6(int) AtomicXor 68 26 27 25
Store 29(u) 69
70: 6(int) Load 11(pos)
71: 18(int) ShiftRightLogical 70 21
- 72: 23(ptr) AccessChain 17 19 71
+ 72: 23(ptr) AccessChain 17(sbuf) 19 71
73: 6(int) Load 72
74: 8(float) ConvertUToF 73
75: 9(fvec4) CompositeConstruct 74 74 74 74
diff --git a/Test/baseResults/hlsl.structbuffer.byte.frag.out b/Test/baseResults/hlsl.structbuffer.byte.frag.out
index 57e6f0c..05db7f3 100644
--- a/Test/baseResults/hlsl.structbuffer.byte.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.byte.frag.out
@@ -10,8 +10,8 @@
0:7 move second child to first child (temp uint)
0:7 'size' (temp uint)
0:7 array length (temp uint)
-0:7 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:7 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:7 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:7 Constant:
0:7 0 (const uint)
0:12 Branch: Return with expression
@@ -19,9 +19,9 @@
0:10 add (temp 4-component vector of float)
0:9 add (temp 4-component vector of float)
0:9 Convert uint to float (temp float)
-0:9 indirect index (layout(row_major std430 ) readonly buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:9 indirect index (layout(row_major std430 ) buffer uint)
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
@@ -42,14 +42,14 @@
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
@@ -74,14 +74,14 @@
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -89,8 +89,8 @@
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -112,14 +112,14 @@
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -127,8 +127,8 @@
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -136,8 +136,8 @@
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -155,7 +155,7 @@
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -174,8 +174,8 @@
0:7 move second child to first child (temp uint)
0:7 'size' (temp uint)
0:7 array length (temp uint)
-0:7 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:7 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:7 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:7 Constant:
0:7 0 (const uint)
0:12 Branch: Return with expression
@@ -183,9 +183,9 @@
0:10 add (temp 4-component vector of float)
0:9 add (temp 4-component vector of float)
0:9 Convert uint to float (temp float)
-0:9 indirect index (layout(row_major std430 ) readonly buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:9 indirect index (layout(row_major std430 ) buffer uint)
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
@@ -206,14 +206,14 @@
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
@@ -238,14 +238,14 @@
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -253,8 +253,8 @@
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -276,14 +276,14 @@
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -291,8 +291,8 @@
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -300,8 +300,8 @@
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -319,7 +319,7 @@
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -337,8 +337,8 @@
Name 11 "pos"
Name 14 "size"
Name 16 "sbuf"
- MemberName 16(sbuf) 0 "sbuf"
- Name 18 ""
+ MemberName 16(sbuf) 0 "@data"
+ Name 18 "sbuf"
Name 30 "byteAddrTemp"
Name 53 "byteAddrTemp"
Name 78 "byteAddrTemp"
@@ -350,7 +350,7 @@
MemberDecorate 16(sbuf) 0 NonWritable
MemberDecorate 16(sbuf) 0 Offset 0
Decorate 16(sbuf) BufferBlock
- Decorate 18 DescriptorSet 0
+ Decorate 18(sbuf) DescriptorSet 0
Decorate 107(pos) Location 0
Decorate 110(@entryPointOutput) Location 0
2: TypeVoid
@@ -363,7 +363,7 @@
15: TypeRuntimeArray 6(int)
16(sbuf): TypeStruct 15
17: TypePointer Uniform 16(sbuf)
- 18: 17(ptr) Variable Uniform
+ 18(sbuf): 17(ptr) Variable Uniform
19: TypeInt 32 1
21: 19(int) Constant 0
23: 19(int) Constant 2
@@ -403,11 +403,11 @@
30(byteAddrTemp): 29(ptr) Variable Function
53(byteAddrTemp): 29(ptr) Variable Function
78(byteAddrTemp): 29(ptr) Variable Function
- 20: 19(int) ArrayLength 18 0
+ 20: 19(int) ArrayLength 18(sbuf) 0
Store 14(size) 20
22: 6(int) Load 11(pos)
24: 19(int) ShiftRightLogical 22 23
- 26: 25(ptr) AccessChain 18 21 24
+ 26: 25(ptr) AccessChain 18(sbuf) 21 24
27: 6(int) Load 26
28: 8(float) ConvertUToF 27
31: 6(int) Load 11(pos)
@@ -415,11 +415,11 @@
34: 19(int) ShiftRightLogical 33 23
Store 30(byteAddrTemp) 34
35: 19(int) Load 30(byteAddrTemp)
- 36: 25(ptr) AccessChain 18 21 35
+ 36: 25(ptr) AccessChain 18(sbuf) 21 35
37: 6(int) Load 36
38: 19(int) Load 30(byteAddrTemp)
40: 19(int) IAdd 38 39
- 41: 25(ptr) AccessChain 18 21 40
+ 41: 25(ptr) AccessChain 18(sbuf) 21 40
42: 6(int) Load 41
44: 43(ivec2) CompositeConstruct 37 42
46: 45(fvec2) ConvertUToF 44
@@ -433,15 +433,15 @@
57: 19(int) ShiftRightLogical 56 23
Store 53(byteAddrTemp) 57
58: 19(int) Load 53(byteAddrTemp)
- 59: 25(ptr) AccessChain 18 21 58
+ 59: 25(ptr) AccessChain 18(sbuf) 21 58
60: 6(int) Load 59
61: 19(int) Load 53(byteAddrTemp)
62: 19(int) IAdd 61 39
- 63: 25(ptr) AccessChain 18 21 62
+ 63: 25(ptr) AccessChain 18(sbuf) 21 62
64: 6(int) Load 63
65: 19(int) Load 53(byteAddrTemp)
66: 19(int) IAdd 65 23
- 67: 25(ptr) AccessChain 18 21 66
+ 67: 25(ptr) AccessChain 18(sbuf) 21 66
68: 6(int) Load 67
70: 69(ivec3) CompositeConstruct 60 64 68
72: 71(fvec3) ConvertUToF 70
@@ -455,19 +455,19 @@
82: 19(int) ShiftRightLogical 81 23
Store 78(byteAddrTemp) 82
83: 19(int) Load 78(byteAddrTemp)
- 84: 25(ptr) AccessChain 18 21 83
+ 84: 25(ptr) AccessChain 18(sbuf) 21 83
85: 6(int) Load 84
86: 19(int) Load 78(byteAddrTemp)
87: 19(int) IAdd 86 39
- 88: 25(ptr) AccessChain 18 21 87
+ 88: 25(ptr) AccessChain 18(sbuf) 21 87
89: 6(int) Load 88
90: 19(int) Load 78(byteAddrTemp)
91: 19(int) IAdd 90 23
- 92: 25(ptr) AccessChain 18 21 91
+ 92: 25(ptr) AccessChain 18(sbuf) 21 91
93: 6(int) Load 92
94: 19(int) Load 78(byteAddrTemp)
96: 19(int) IAdd 94 95
- 97: 25(ptr) AccessChain 18 21 96
+ 97: 25(ptr) AccessChain 18(sbuf) 21 96
98: 6(int) Load 97
100: 99(ivec4) CompositeConstruct 85 89 93 98
101: 9(fvec4) ConvertUToF 100
diff --git a/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/Test/baseResults/hlsl.structbuffer.coherent.frag.out
index 56b5abb..8ba0454 100644
--- a/Test/baseResults/hlsl.structbuffer.coherent.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.coherent.frag.out
@@ -7,9 +7,9 @@
0:12 'pos' (in uint)
0:? Sequence
0:13 move second child to first child (temp float)
-0:13 indirect index (layout(row_major std430 ) coherent temp float)
-0:13 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float)
-0:13 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:13 indirect index (layout(row_major std430 ) buffer float)
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:13 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:13 Constant:
0:13 0 (const uint)
0:13 add (temp uint)
@@ -22,8 +22,8 @@
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:17 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:17 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
@@ -33,9 +33,9 @@
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test})
-0:19 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:19 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:19 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
@@ -46,17 +46,17 @@
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test})
-0:20 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:20 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:20 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) coherent temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
@@ -80,8 +80,8 @@
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
+0:? 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -97,9 +97,9 @@
0:12 'pos' (in uint)
0:? Sequence
0:13 move second child to first child (temp float)
-0:13 indirect index (layout(row_major std430 ) coherent temp float)
-0:13 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float)
-0:13 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:13 indirect index (layout(row_major std430 ) buffer float)
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:13 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:13 Constant:
0:13 0 (const uint)
0:13 add (temp uint)
@@ -112,8 +112,8 @@
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:17 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:17 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
@@ -123,9 +123,9 @@
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test})
-0:19 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:19 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:19 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
@@ -136,17 +136,17 @@
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test})
-0:20 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:20 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:20 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) coherent temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
@@ -170,8 +170,8 @@
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
+0:? 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -188,15 +188,15 @@
Name 12 "@main(u1;"
Name 11 "pos"
Name 15 "sbuf2"
- MemberName 15(sbuf2) 0 "sbuf2"
- Name 17 ""
+ MemberName 15(sbuf2) 0 "@data"
+ Name 17 "sbuf2"
Name 26 "size"
Name 28 "sb_t"
MemberName 28(sb_t) 0 "color"
MemberName 28(sb_t) 1 "test"
Name 30 "sbuf"
- MemberName 30(sbuf) 0 "sbuf"
- Name 32 ""
+ MemberName 30(sbuf) 0 "@data"
+ Name 32 "sbuf"
Name 34 "stride"
Name 69 "pos"
Name 71 "pos"
@@ -206,7 +206,7 @@
MemberDecorate 15(sbuf2) 0 Coherent
MemberDecorate 15(sbuf2) 0 Offset 0
Decorate 15(sbuf2) BufferBlock
- Decorate 17 DescriptorSet 0
+ Decorate 17(sbuf2) DescriptorSet 0
MemberDecorate 28(sb_t) 0 Coherent
MemberDecorate 28(sb_t) 0 Offset 0
MemberDecorate 28(sb_t) 1 Coherent
@@ -215,7 +215,7 @@
MemberDecorate 30(sbuf) 0 Coherent
MemberDecorate 30(sbuf) 0 Offset 0
Decorate 30(sbuf) BufferBlock
- Decorate 32 DescriptorSet 0
+ Decorate 32(sbuf) DescriptorSet 0
Decorate 71(pos) Location 0
Decorate 74(@entryPointOutput) Location 0
2: TypeVoid
@@ -228,7 +228,7 @@
14: TypeRuntimeArray 8(float)
15(sbuf2): TypeStruct 14
16: TypePointer Uniform 15(sbuf2)
- 17: 16(ptr) Variable Uniform
+ 17(sbuf2): 16(ptr) Variable Uniform
18: TypeInt 32 1
19: 18(int) Constant 0
21: 6(int) Constant 1
@@ -239,7 +239,7 @@
29: TypeRuntimeArray 28(sb_t)
30(sbuf): TypeStruct 29
31: TypePointer Uniform 30(sbuf)
- 32: 31(ptr) Variable Uniform
+ 32(sbuf): 31(ptr) Variable Uniform
35: 6(int) Constant 16
37: 18(int) Constant 1
38: TypePointer Uniform 6(int)
@@ -270,23 +270,23 @@
34(stride): 7(ptr) Variable Function
20: 6(int) Load 11(pos)
22: 6(int) IAdd 20 21
- 25: 24(ptr) AccessChain 17 19 22
+ 25: 24(ptr) AccessChain 17(sbuf2) 19 22
Store 25 23
- 33: 18(int) ArrayLength 32 0
+ 33: 18(int) ArrayLength 32(sbuf) 0
Store 26(size) 33
Store 34(stride) 35
36: 6(int) Load 11(pos)
- 39: 38(ptr) AccessChain 32 19 36 37
+ 39: 38(ptr) AccessChain 32(sbuf) 19 36 37
40: 6(int) Load 39
43: 41(bool) INotEqual 40 42
SelectionMerge 45 None
BranchConditional 43 44 61
44: Label
46: 6(int) Load 11(pos)
- 48: 47(ptr) AccessChain 32 19 46 19
+ 48: 47(ptr) AccessChain 32(sbuf) 19 46 19
49: 27(fvec3) Load 48
50: 6(int) Load 11(pos)
- 51: 24(ptr) AccessChain 17 19 50
+ 51: 24(ptr) AccessChain 17(sbuf2) 19 50
52: 8(float) Load 51
53: 27(fvec3) CompositeConstruct 52 52 52
54: 27(fvec3) FAdd 49 53
diff --git a/Test/baseResults/hlsl.structbuffer.fn.frag.out b/Test/baseResults/hlsl.structbuffer.fn.frag.out
new file mode 100644
index 0000000..6fc1d45
--- /dev/null
+++ b/Test/baseResults/hlsl.structbuffer.fn.frag.out
@@ -0,0 +1,266 @@
+hlsl.structbuffer.fn.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:5 Function Definition: get(block--vu4[0]1;u1; (temp 4-component vector of uint)
+0:5 Function Parameters:
+0:5 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:5 'bufferOffset' (in uint)
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 indirect index (layout(row_major std430 ) buffer 4-component vector of uint)
+0:6 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint)
+0:6 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:6 Constant:
+0:6 0 (const uint)
+0:6 'bufferOffset' (in uint)
+0:10 Function Definition: set(block--vu4[0]1;u1;vu4; (temp void)
+0:10 Function Parameters:
+0:10 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:10 'bufferOffset' (in uint)
+0:10 'data' (in 4-component vector of uint)
+0:? Sequence
+0:11 move second child to first child (temp 4-component vector of uint)
+0:11 indirect index (buffer 4-component vector of uint)
+0:11 @data: direct index for structure (buffer implicitly-sized array of 4-component vector of uint)
+0:11 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:11 Constant:
+0:11 0 (const uint)
+0:11 'bufferOffset' (in uint)
+0:11 'data' (in 4-component vector of uint)
+0:20 Function Definition: @main(u1; (temp 4-component vector of float)
+0:20 Function Parameters:
+0:20 'pos' (in uint)
+0:? Sequence
+0:21 Function Call: set(block--vu4[0]1;u1;vu4; (temp void)
+0:21 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:21 Constant:
+0:21 2 (const uint)
+0:21 Function Call: get(block--vu4[0]1;u1; (temp 4-component vector of uint)
+0:21 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:21 Constant:
+0:21 3 (const uint)
+0:23 Branch: Return with expression
+0:23 Constant:
+0:23 0.000000
+0:23 0.000000
+0:23 0.000000
+0:23 0.000000
+0:20 Function Definition: main( (temp void)
+0:20 Function Parameters:
+0:? Sequence
+0:20 move second child to first child (temp uint)
+0:? 'pos' (temp uint)
+0:? 'pos' (layout(location=0 ) in uint)
+0:20 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:20 Function Call: @main(u1; (temp 4-component vector of float)
+0:? 'pos' (temp uint)
+0:? Linker Objects
+0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf3' (layout(binding=12 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 3-component vector of uint @data})
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'pos' (layout(location=0 ) in uint)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:5 Function Definition: get(block--vu4[0]1;u1; (temp 4-component vector of uint)
+0:5 Function Parameters:
+0:5 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:5 'bufferOffset' (in uint)
+0:? Sequence
+0:6 Branch: Return with expression
+0:6 indirect index (layout(row_major std430 ) buffer 4-component vector of uint)
+0:6 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint)
+0:6 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:6 Constant:
+0:6 0 (const uint)
+0:6 'bufferOffset' (in uint)
+0:10 Function Definition: set(block--vu4[0]1;u1;vu4; (temp void)
+0:10 Function Parameters:
+0:10 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:10 'bufferOffset' (in uint)
+0:10 'data' (in 4-component vector of uint)
+0:? Sequence
+0:11 move second child to first child (temp 4-component vector of uint)
+0:11 indirect index (buffer 4-component vector of uint)
+0:11 @data: direct index for structure (buffer implicitly-sized array of 4-component vector of uint)
+0:11 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:11 Constant:
+0:11 0 (const uint)
+0:11 'bufferOffset' (in uint)
+0:11 'data' (in 4-component vector of uint)
+0:20 Function Definition: @main(u1; (temp 4-component vector of float)
+0:20 Function Parameters:
+0:20 'pos' (in uint)
+0:? Sequence
+0:21 Function Call: set(block--vu4[0]1;u1;vu4; (temp void)
+0:21 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:21 Constant:
+0:21 2 (const uint)
+0:21 Function Call: get(block--vu4[0]1;u1; (temp 4-component vector of uint)
+0:21 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:21 Constant:
+0:21 3 (const uint)
+0:23 Branch: Return with expression
+0:23 Constant:
+0:23 0.000000
+0:23 0.000000
+0:23 0.000000
+0:23 0.000000
+0:20 Function Definition: main( (temp void)
+0:20 Function Parameters:
+0:? Sequence
+0:20 move second child to first child (temp uint)
+0:? 'pos' (temp uint)
+0:? 'pos' (layout(location=0 ) in uint)
+0:20 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:20 Function Call: @main(u1; (temp 4-component vector of float)
+0:? 'pos' (temp uint)
+0:? Linker Objects
+0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data})
+0:? 'sbuf3' (layout(binding=12 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 3-component vector of uint @data})
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'pos' (layout(location=0 ) in uint)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 71
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 59 62
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "main"
+ Name 9 ""
+ MemberName 9 0 "@data"
+ Name 15 "get(block--vu4[0]1;u1;"
+ Name 13 "sb"
+ Name 14 "bufferOffset"
+ Name 18 ""
+ MemberName 18 0 "@data"
+ Name 25 "set(block--vu4[0]1;u1;vu4;"
+ Name 22 "sb"
+ Name 23 "bufferOffset"
+ Name 24 "data"
+ Name 31 "@main(u1;"
+ Name 30 "pos"
+ Name 44 "sbuf2"
+ Name 46 "sbuf"
+ Name 48 "param"
+ Name 50 "param"
+ Name 51 "param"
+ Name 57 "pos"
+ Name 59 "pos"
+ Name 62 "@entryPointOutput"
+ Name 63 "param"
+ Name 68 "sbuf3"
+ MemberName 68(sbuf3) 0 "@data"
+ Name 70 "sbuf3"
+ Decorate 8 ArrayStride 16
+ MemberDecorate 9 0 NonWritable
+ MemberDecorate 9 0 Offset 0
+ Decorate 9 BufferBlock
+ Decorate 17 ArrayStride 16
+ MemberDecorate 18 0 Offset 0
+ Decorate 18 BufferBlock
+ Decorate 44(sbuf2) DescriptorSet 0
+ Decorate 46(sbuf) DescriptorSet 0
+ Decorate 46(sbuf) Binding 10
+ Decorate 59(pos) Location 0
+ Decorate 62(@entryPointOutput) Location 0
+ Decorate 67 ArrayStride 16
+ MemberDecorate 68(sbuf3) 0 NonWritable
+ MemberDecorate 68(sbuf3) 0 Offset 0
+ Decorate 68(sbuf3) BufferBlock
+ Decorate 70(sbuf3) DescriptorSet 0
+ Decorate 70(sbuf3) Binding 12
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 4
+ 8: TypeRuntimeArray 7(ivec4)
+ 9: TypeStruct 8
+ 10: TypePointer Uniform 9(struct)
+ 11: TypePointer Function 6(int)
+ 12: TypeFunction 7(ivec4) 10(ptr) 11(ptr)
+ 17: TypeRuntimeArray 7(ivec4)
+ 18: TypeStruct 17
+ 19: TypePointer Uniform 18(struct)
+ 20: TypePointer Function 7(ivec4)
+ 21: TypeFunction 2 19(ptr) 11(ptr) 20(ptr)
+ 27: TypeFloat 32
+ 28: TypeVector 27(float) 4
+ 29: TypeFunction 28(fvec4) 11(ptr)
+ 33: TypeInt 32 1
+ 34: 33(int) Constant 0
+ 36: TypePointer Uniform 7(ivec4)
+ 44(sbuf2): 19(ptr) Variable Uniform
+ 45: 6(int) Constant 2
+ 46(sbuf): 10(ptr) Variable Uniform
+ 47: 6(int) Constant 3
+ 53: 27(float) Constant 0
+ 54: 28(fvec4) ConstantComposite 53 53 53 53
+ 58: TypePointer Input 6(int)
+ 59(pos): 58(ptr) Variable Input
+ 61: TypePointer Output 28(fvec4)
+62(@entryPointOutput): 61(ptr) Variable Output
+ 66: TypeVector 6(int) 3
+ 67: TypeRuntimeArray 66(ivec3)
+ 68(sbuf3): TypeStruct 67
+ 69: TypePointer Uniform 68(sbuf3)
+ 70(sbuf3): 69(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 57(pos): 11(ptr) Variable Function
+ 63(param): 11(ptr) Variable Function
+ 60: 6(int) Load 59(pos)
+ Store 57(pos) 60
+ 64: 6(int) Load 57(pos)
+ Store 63(param) 64
+ 65: 28(fvec4) FunctionCall 31(@main(u1;) 63(param)
+ Store 62(@entryPointOutput) 65
+ Return
+ FunctionEnd
+15(get(block--vu4[0]1;u1;): 7(ivec4) Function None 12
+ 13(sb): 10(ptr) FunctionParameter
+14(bufferOffset): 11(ptr) FunctionParameter
+ 16: Label
+ 35: 6(int) Load 14(bufferOffset)
+ 37: 36(ptr) AccessChain 13(sb) 34 35
+ 38: 7(ivec4) Load 37
+ ReturnValue 38
+ FunctionEnd
+25(set(block--vu4[0]1;u1;vu4;): 2 Function None 21
+ 22(sb): 19(ptr) FunctionParameter
+23(bufferOffset): 11(ptr) FunctionParameter
+ 24(data): 20(ptr) FunctionParameter
+ 26: Label
+ 41: 6(int) Load 23(bufferOffset)
+ 42: 7(ivec4) Load 24(data)
+ 43: 36(ptr) AccessChain 22(sb) 34 41
+ Store 43 42
+ Return
+ FunctionEnd
+ 31(@main(u1;): 28(fvec4) Function None 29
+ 30(pos): 11(ptr) FunctionParameter
+ 32: Label
+ 48(param): 11(ptr) Variable Function
+ 50(param): 11(ptr) Variable Function
+ 51(param): 20(ptr) Variable Function
+ Store 48(param) 47
+ 49: 7(ivec4) FunctionCall 15(get(block--vu4[0]1;u1;) 46(sbuf) 48(param)
+ Store 50(param) 45
+ Store 51(param) 49
+ 52: 2 FunctionCall 25(set(block--vu4[0]1;u1;vu4;) 44(sbuf2) 50(param) 51(param)
+ ReturnValue 54
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.structbuffer.frag.out b/Test/baseResults/hlsl.structbuffer.frag.out
index 75edf55..dea30d4 100644
--- a/Test/baseResults/hlsl.structbuffer.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.frag.out
@@ -9,9 +9,9 @@
0:13 Sequence
0:13 move second child to first child (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
0:13 'mydata' (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 indirect index (layout(binding=10 row_major std430 ) readonly buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:13 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:13 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:13 Constant:
0:13 0 (const uint)
0:13 'pos' (in uint)
@@ -19,8 +19,8 @@
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:17 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:17 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
@@ -30,9 +30,9 @@
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:19 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:19 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:19 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
@@ -43,17 +43,17 @@
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:20 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:20 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:20 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) readonly temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
@@ -86,8 +86,8 @@
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
+0:? 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -105,9 +105,9 @@
0:13 Sequence
0:13 move second child to first child (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
0:13 'mydata' (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 indirect index (layout(binding=10 row_major std430 ) readonly buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:13 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:13 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:13 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:13 Constant:
0:13 0 (const uint)
0:13 'pos' (in uint)
@@ -115,8 +115,8 @@
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:17 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:17 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
@@ -126,9 +126,9 @@
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:19 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:19 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:19 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
@@ -139,17 +139,17 @@
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:20 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
-0:20 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2})
+0:20 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) readonly temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
@@ -182,8 +182,8 @@
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data})
+0:? 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -209,13 +209,13 @@
MemberName 19(sb_t) 1 "test"
MemberName 19(sb_t) 2 "test2"
Name 21 "sbuf"
- MemberName 21(sbuf) 0 "sbuf"
- Name 23 ""
+ MemberName 21(sbuf) 0 "@data"
+ Name 23 "sbuf"
Name 40 "size"
Name 42 "stride"
Name 57 "sbuf2"
- MemberName 57(sbuf2) 0 "sbuf2"
- Name 59 ""
+ MemberName 57(sbuf2) 0 "@data"
+ Name 59 "sbuf2"
Name 85 "pos"
Name 87 "pos"
Name 90 "@entryPointOutput"
@@ -230,13 +230,13 @@
MemberDecorate 21(sbuf) 0 NonWritable
MemberDecorate 21(sbuf) 0 Offset 0
Decorate 21(sbuf) BufferBlock
- Decorate 23 DescriptorSet 0
- Decorate 23 Binding 10
+ Decorate 23(sbuf) DescriptorSet 0
+ Decorate 23(sbuf) Binding 10
Decorate 56 ArrayStride 4
MemberDecorate 57(sbuf2) 0 NonWritable
MemberDecorate 57(sbuf2) 0 Offset 0
Decorate 57(sbuf2) BufferBlock
- Decorate 59 DescriptorSet 0
+ Decorate 59(sbuf2) DescriptorSet 0
Decorate 87(pos) Location 0
Decorate 90(@entryPointOutput) Location 0
2: TypeVoid
@@ -254,7 +254,7 @@
20: TypeRuntimeArray 19(sb_t)
21(sbuf): TypeStruct 20
22: TypePointer Uniform 21(sbuf)
- 23: 22(ptr) Variable Uniform
+ 23(sbuf): 22(ptr) Variable Uniform
24: TypeInt 32 1
25: 24(int) Constant 0
27: TypePointer Uniform 19(sb_t)
@@ -269,7 +269,7 @@
56: TypeRuntimeArray 8(float)
57(sbuf2): TypeStruct 56
58: TypePointer Uniform 57(sbuf2)
- 59: 58(ptr) Variable Uniform
+ 59(sbuf2): 58(ptr) Variable Uniform
61: TypePointer Uniform 8(float)
66: 8(float) Constant 0
73: TypePointer Function 8(float)
@@ -296,7 +296,7 @@
40(size): 7(ptr) Variable Function
42(stride): 7(ptr) Variable Function
26: 6(int) Load 11(pos)
- 28: 27(ptr) AccessChain 23 25 26
+ 28: 27(ptr) AccessChain 23(sbuf) 25 26
29: 19(sb_t) Load 28
30: 14(fvec3) CompositeExtract 29 0
32: 31(ptr) AccessChain 18(mydata) 25
@@ -307,21 +307,21 @@
37: 6(int) CompositeExtract 29 2
39: 35(ptr) AccessChain 18(mydata) 38
Store 39 37
- 41: 24(int) ArrayLength 23 0
+ 41: 24(int) ArrayLength 23(sbuf) 0
Store 40(size) 41
Store 42(stride) 43
44: 6(int) Load 11(pos)
- 46: 45(ptr) AccessChain 23 25 44 34
+ 46: 45(ptr) AccessChain 23(sbuf) 25 44 34
47: 6(int) Load 46
49: 15(bool) INotEqual 47 48
SelectionMerge 51 None
BranchConditional 49 50 72
50: Label
52: 6(int) Load 11(pos)
- 54: 53(ptr) AccessChain 23 25 52 25
+ 54: 53(ptr) AccessChain 23(sbuf) 25 52 25
55: 14(fvec3) Load 54
60: 6(int) Load 11(pos)
- 62: 61(ptr) AccessChain 59 25 60
+ 62: 61(ptr) AccessChain 59(sbuf2) 25 60
63: 8(float) Load 62
64: 14(fvec3) CompositeConstruct 63 63 63
65: 14(fvec3) FAdd 55 64
diff --git a/Test/baseResults/hlsl.structbuffer.rw.frag.out b/Test/baseResults/hlsl.structbuffer.rw.frag.out
index a319a2e..d905438 100644
--- a/Test/baseResults/hlsl.structbuffer.rw.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.rw.frag.out
@@ -7,9 +7,9 @@
0:12 'pos' (in uint)
0:? Sequence
0:13 move second child to first child (temp float)
-0:13 indirect index (layout(row_major std430 ) temp float)
-0:13 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
-0:13 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:13 indirect index (layout(row_major std430 ) buffer float)
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:13 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:13 Constant:
0:13 0 (const uint)
0:13 add (temp uint)
@@ -22,8 +22,8 @@
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
@@ -33,9 +33,9 @@
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test})
-0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
@@ -46,17 +46,17 @@
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test})
-0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
@@ -80,8 +80,8 @@
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
+0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -97,9 +97,9 @@
0:12 'pos' (in uint)
0:? Sequence
0:13 move second child to first child (temp float)
-0:13 indirect index (layout(row_major std430 ) temp float)
-0:13 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
-0:13 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:13 indirect index (layout(row_major std430 ) buffer float)
+0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:13 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:13 Constant:
0:13 0 (const uint)
0:13 add (temp uint)
@@ -112,8 +112,8 @@
0:17 move second child to first child (temp uint)
0:17 'size' (temp uint)
0:17 array length (temp uint)
-0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:17 Constant:
0:17 0 (const uint)
0:17 move second child to first child (temp uint)
@@ -123,9 +123,9 @@
0:19 Test condition and select (temp void)
0:19 Condition
0:19 test: direct index for structure (temp bool)
-0:19 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test})
-0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:19 Constant:
0:19 0 (const uint)
0:19 'pos' (in uint)
@@ -136,17 +136,17 @@
0:? Construct vec4 (temp 4-component vector of float)
0:20 add (temp 3-component vector of float)
0:20 color: direct index for structure (temp 3-component vector of float)
-0:20 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test})
-0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
-0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
+0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test})
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test})
+0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
0:20 Constant:
0:20 0 (const int)
-0:20 indirect index (layout(row_major std430 ) temp float)
-0:20 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
-0:20 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:20 indirect index (layout(row_major std430 ) buffer float)
+0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float)
+0:20 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:20 Constant:
0:20 0 (const uint)
0:20 'pos' (in uint)
@@ -170,8 +170,8 @@
0:12 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf})
-0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data})
+0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -188,15 +188,15 @@
Name 12 "@main(u1;"
Name 11 "pos"
Name 15 "sbuf2"
- MemberName 15(sbuf2) 0 "sbuf2"
- Name 17 ""
+ MemberName 15(sbuf2) 0 "@data"
+ Name 17 "sbuf2"
Name 26 "size"
Name 28 "sb_t"
MemberName 28(sb_t) 0 "color"
MemberName 28(sb_t) 1 "test"
Name 30 "sbuf"
- MemberName 30(sbuf) 0 "sbuf"
- Name 32 ""
+ MemberName 30(sbuf) 0 "@data"
+ Name 32 "sbuf"
Name 34 "stride"
Name 69 "pos"
Name 71 "pos"
@@ -205,13 +205,13 @@
Decorate 14 ArrayStride 4
MemberDecorate 15(sbuf2) 0 Offset 0
Decorate 15(sbuf2) BufferBlock
- Decorate 17 DescriptorSet 0
+ Decorate 17(sbuf2) DescriptorSet 0
MemberDecorate 28(sb_t) 0 Offset 0
MemberDecorate 28(sb_t) 1 Offset 12
Decorate 29 ArrayStride 16
MemberDecorate 30(sbuf) 0 Offset 0
Decorate 30(sbuf) BufferBlock
- Decorate 32 DescriptorSet 0
+ Decorate 32(sbuf) DescriptorSet 0
Decorate 71(pos) Location 0
Decorate 74(@entryPointOutput) Location 0
2: TypeVoid
@@ -224,7 +224,7 @@
14: TypeRuntimeArray 8(float)
15(sbuf2): TypeStruct 14
16: TypePointer Uniform 15(sbuf2)
- 17: 16(ptr) Variable Uniform
+ 17(sbuf2): 16(ptr) Variable Uniform
18: TypeInt 32 1
19: 18(int) Constant 0
21: 6(int) Constant 1
@@ -235,7 +235,7 @@
29: TypeRuntimeArray 28(sb_t)
30(sbuf): TypeStruct 29
31: TypePointer Uniform 30(sbuf)
- 32: 31(ptr) Variable Uniform
+ 32(sbuf): 31(ptr) Variable Uniform
35: 6(int) Constant 16
37: 18(int) Constant 1
38: TypePointer Uniform 6(int)
@@ -266,23 +266,23 @@
34(stride): 7(ptr) Variable Function
20: 6(int) Load 11(pos)
22: 6(int) IAdd 20 21
- 25: 24(ptr) AccessChain 17 19 22
+ 25: 24(ptr) AccessChain 17(sbuf2) 19 22
Store 25 23
- 33: 18(int) ArrayLength 32 0
+ 33: 18(int) ArrayLength 32(sbuf) 0
Store 26(size) 33
Store 34(stride) 35
36: 6(int) Load 11(pos)
- 39: 38(ptr) AccessChain 32 19 36 37
+ 39: 38(ptr) AccessChain 32(sbuf) 19 36 37
40: 6(int) Load 39
43: 41(bool) INotEqual 40 42
SelectionMerge 45 None
BranchConditional 43 44 61
44: Label
46: 6(int) Load 11(pos)
- 48: 47(ptr) AccessChain 32 19 46 19
+ 48: 47(ptr) AccessChain 32(sbuf) 19 46 19
49: 27(fvec3) Load 48
50: 6(int) Load 11(pos)
- 51: 24(ptr) AccessChain 17 19 50
+ 51: 24(ptr) AccessChain 17(sbuf2) 19 50
52: 8(float) Load 51
53: 27(fvec3) CompositeConstruct 52 52 52
54: 27(fvec3) FAdd 49 53
diff --git a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
index 328642b..edbc677 100644
--- a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
@@ -10,8 +10,8 @@
0:7 move second child to first child (temp uint)
0:7 'size' (temp uint)
0:7 array length (temp uint)
-0:7 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:7 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:7 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:7 Constant:
0:7 0 (const uint)
0:? Sequence
@@ -23,15 +23,15 @@
0:9 2 (const int)
0:9 move second child to first child (temp float)
0:9 indirect index (temp float)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 'byteAddrTemp' (temp int)
0:9 Convert uint to float (temp float)
0:9 indirect index (layout(row_major std430 ) buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
@@ -47,8 +47,8 @@
0:10 2 (const int)
0:10 move second child to first child (temp float)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
@@ -62,14 +62,14 @@
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
@@ -80,8 +80,8 @@
0:10 0 (const int)
0:10 move second child to first child (temp float)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
@@ -98,14 +98,14 @@
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
@@ -123,8 +123,8 @@
0:11 2 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
@@ -138,14 +138,14 @@
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -153,8 +153,8 @@
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -165,8 +165,8 @@
0:11 0 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -183,14 +183,14 @@
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -198,8 +198,8 @@
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -210,8 +210,8 @@
0:11 1 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -228,14 +228,14 @@
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -243,8 +243,8 @@
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -262,8 +262,8 @@
0:12 2 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
@@ -277,14 +277,14 @@
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -292,8 +292,8 @@
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -301,8 +301,8 @@
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -313,8 +313,8 @@
0:12 0 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -331,14 +331,14 @@
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -346,8 +346,8 @@
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -355,8 +355,8 @@
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -367,8 +367,8 @@
0:12 1 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -385,14 +385,14 @@
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -400,8 +400,8 @@
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -409,8 +409,8 @@
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -421,8 +421,8 @@
0:12 2 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -439,14 +439,14 @@
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -454,8 +454,8 @@
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -463,8 +463,8 @@
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -477,8 +477,8 @@
0:14 Construct vec4 (temp 4-component vector of float)
0:14 Convert uint to float (temp float)
0:14 indirect index (layout(row_major std430 ) buffer uint)
-0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:14 Constant:
0:14 0 (const uint)
0:14 right-shift (temp int)
@@ -496,7 +496,7 @@
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -515,8 +515,8 @@
0:7 move second child to first child (temp uint)
0:7 'size' (temp uint)
0:7 array length (temp uint)
-0:7 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:7 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:7 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:7 Constant:
0:7 0 (const uint)
0:? Sequence
@@ -528,15 +528,15 @@
0:9 2 (const int)
0:9 move second child to first child (temp float)
0:9 indirect index (temp float)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 'byteAddrTemp' (temp int)
0:9 Convert uint to float (temp float)
0:9 indirect index (layout(row_major std430 ) buffer uint)
-0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
@@ -552,8 +552,8 @@
0:10 2 (const int)
0:10 move second child to first child (temp float)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
@@ -567,14 +567,14 @@
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
@@ -585,8 +585,8 @@
0:10 0 (const int)
0:10 move second child to first child (temp float)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
@@ -603,14 +603,14 @@
0:10 2 (const int)
0:? Construct vec2 (temp 2-component vector of uint)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 'byteAddrTemp' (temp int)
0:10 indirect index (temp float)
-0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 add (temp int)
@@ -628,8 +628,8 @@
0:11 2 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
@@ -643,14 +643,14 @@
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -658,8 +658,8 @@
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -670,8 +670,8 @@
0:11 0 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -688,14 +688,14 @@
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -703,8 +703,8 @@
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -715,8 +715,8 @@
0:11 1 (const int)
0:11 move second child to first child (temp float)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -733,14 +733,14 @@
0:11 2 (const int)
0:? Construct vec3 (temp 3-component vector of uint)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 'byteAddrTemp' (temp int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -748,8 +748,8 @@
0:11 Constant:
0:11 1 (const int)
0:11 indirect index (temp float)
-0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 add (temp int)
@@ -767,8 +767,8 @@
0:12 2 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
@@ -782,14 +782,14 @@
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -797,8 +797,8 @@
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -806,8 +806,8 @@
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -818,8 +818,8 @@
0:12 0 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -836,14 +836,14 @@
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -851,8 +851,8 @@
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -860,8 +860,8 @@
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -872,8 +872,8 @@
0:12 1 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -890,14 +890,14 @@
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -905,8 +905,8 @@
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -914,8 +914,8 @@
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -926,8 +926,8 @@
0:12 2 (const int)
0:12 move second child to first child (temp float)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -944,14 +944,14 @@
0:12 2 (const int)
0:? Construct vec4 (temp 4-component vector of uint)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 'byteAddrTemp' (temp int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -959,8 +959,8 @@
0:12 Constant:
0:12 1 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -968,8 +968,8 @@
0:12 Constant:
0:12 2 (const int)
0:12 indirect index (temp float)
-0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 add (temp int)
@@ -982,8 +982,8 @@
0:14 Construct vec4 (temp 4-component vector of float)
0:14 Convert uint to float (temp float)
0:14 indirect index (layout(row_major std430 ) buffer uint)
-0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
-0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
+0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:14 Constant:
0:14 0 (const uint)
0:14 right-shift (temp int)
@@ -1001,7 +1001,7 @@
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
-0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
+0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
@@ -1019,8 +1019,8 @@
Name 11 "pos"
Name 14 "size"
Name 16 "sbuf"
- MemberName 16(sbuf) 0 "sbuf"
- Name 18 ""
+ MemberName 16(sbuf) 0 "@data"
+ Name 18 "sbuf"
Name 22 "byteAddrTemp"
Name 35 "byteAddrTemp"
Name 39 "byteAddrTemp"
@@ -1035,7 +1035,7 @@
Decorate 15 ArrayStride 4
MemberDecorate 16(sbuf) 0 Offset 0
Decorate 16(sbuf) BufferBlock
- Decorate 18 DescriptorSet 0
+ Decorate 18(sbuf) DescriptorSet 0
Decorate 233(pos) Location 0
Decorate 236(@entryPointOutput) Location 0
2: TypeVoid
@@ -1048,7 +1048,7 @@
15: TypeRuntimeArray 6(int)
16(sbuf): TypeStruct 15
17: TypePointer Uniform 16(sbuf)
- 18: 17(ptr) Variable Uniform
+ 18(sbuf): 17(ptr) Variable Uniform
19: TypeInt 32 1
21: TypePointer Function 19(int)
24: 19(int) Constant 2
@@ -1090,7 +1090,7 @@
74(byteAddrTemp): 21(ptr) Variable Function
129(byteAddrTemp): 21(ptr) Variable Function
133(byteAddrTemp): 21(ptr) Variable Function
- 20: 19(int) ArrayLength 18 0
+ 20: 19(int) ArrayLength 18(sbuf) 0
Store 14(size) 20
23: 6(int) Load 11(pos)
25: 19(int) ShiftRightLogical 23 24
@@ -1098,10 +1098,10 @@
27: 19(int) Load 22(byteAddrTemp)
28: 6(int) Load 11(pos)
29: 19(int) ShiftRightLogical 28 24
- 31: 30(ptr) AccessChain 18 26 29
+ 31: 30(ptr) AccessChain 18(sbuf) 26 29
32: 6(int) Load 31
33: 8(float) ConvertUToF 32
- 34: 30(ptr) AccessChain 18 26 27
+ 34: 30(ptr) AccessChain 18(sbuf) 26 27
Store 34 33
36: 6(int) Load 11(pos)
37: 19(int) ShiftRightLogical 36 24
@@ -1111,15 +1111,15 @@
41: 19(int) ShiftRightLogical 40 24
Store 39(byteAddrTemp) 41
42: 19(int) Load 39(byteAddrTemp)
- 43: 30(ptr) AccessChain 18 26 42
+ 43: 30(ptr) AccessChain 18(sbuf) 26 42
44: 6(int) Load 43
45: 19(int) Load 39(byteAddrTemp)
47: 19(int) IAdd 45 46
- 48: 30(ptr) AccessChain 18 26 47
+ 48: 30(ptr) AccessChain 18(sbuf) 26 47
49: 6(int) Load 48
51: 50(ivec2) CompositeConstruct 44 49
53: 6(int) CompositeExtract 51 0
- 54: 30(ptr) AccessChain 18 26 38
+ 54: 30(ptr) AccessChain 18(sbuf) 26 38
Store 54 53
55: 19(int) Load 35(byteAddrTemp)
56: 19(int) IAdd 55 46
@@ -1127,15 +1127,15 @@
58: 19(int) ShiftRightLogical 57 24
Store 39(byteAddrTemp) 58
59: 19(int) Load 39(byteAddrTemp)
- 60: 30(ptr) AccessChain 18 26 59
+ 60: 30(ptr) AccessChain 18(sbuf) 26 59
61: 6(int) Load 60
62: 19(int) Load 39(byteAddrTemp)
63: 19(int) IAdd 62 46
- 64: 30(ptr) AccessChain 18 26 63
+ 64: 30(ptr) AccessChain 18(sbuf) 26 63
65: 6(int) Load 64
66: 50(ivec2) CompositeConstruct 61 65
68: 6(int) CompositeExtract 66 1
- 69: 30(ptr) AccessChain 18 26 56
+ 69: 30(ptr) AccessChain 18(sbuf) 26 56
Store 69 68
71: 6(int) Load 11(pos)
72: 19(int) ShiftRightLogical 71 24
@@ -1145,19 +1145,19 @@
76: 19(int) ShiftRightLogical 75 24
Store 74(byteAddrTemp) 76
77: 19(int) Load 74(byteAddrTemp)
- 78: 30(ptr) AccessChain 18 26 77
+ 78: 30(ptr) AccessChain 18(sbuf) 26 77
79: 6(int) Load 78
80: 19(int) Load 74(byteAddrTemp)
81: 19(int) IAdd 80 46
- 82: 30(ptr) AccessChain 18 26 81
+ 82: 30(ptr) AccessChain 18(sbuf) 26 81
83: 6(int) Load 82
84: 19(int) Load 74(byteAddrTemp)
85: 19(int) IAdd 84 24
- 86: 30(ptr) AccessChain 18 26 85
+ 86: 30(ptr) AccessChain 18(sbuf) 26 85
87: 6(int) Load 86
89: 88(ivec3) CompositeConstruct 79 83 87
90: 6(int) CompositeExtract 89 0
- 91: 30(ptr) AccessChain 18 26 73
+ 91: 30(ptr) AccessChain 18(sbuf) 26 73
Store 91 90
92: 19(int) Load 70(byteAddrTemp)
93: 19(int) IAdd 92 46
@@ -1165,19 +1165,19 @@
95: 19(int) ShiftRightLogical 94 24
Store 74(byteAddrTemp) 95
96: 19(int) Load 74(byteAddrTemp)
- 97: 30(ptr) AccessChain 18 26 96
+ 97: 30(ptr) AccessChain 18(sbuf) 26 96
98: 6(int) Load 97
99: 19(int) Load 74(byteAddrTemp)
100: 19(int) IAdd 99 46
- 101: 30(ptr) AccessChain 18 26 100
+ 101: 30(ptr) AccessChain 18(sbuf) 26 100
102: 6(int) Load 101
103: 19(int) Load 74(byteAddrTemp)
104: 19(int) IAdd 103 24
- 105: 30(ptr) AccessChain 18 26 104
+ 105: 30(ptr) AccessChain 18(sbuf) 26 104
106: 6(int) Load 105
107: 88(ivec3) CompositeConstruct 98 102 106
108: 6(int) CompositeExtract 107 1
- 109: 30(ptr) AccessChain 18 26 93
+ 109: 30(ptr) AccessChain 18(sbuf) 26 93
Store 109 108
110: 19(int) Load 70(byteAddrTemp)
111: 19(int) IAdd 110 24
@@ -1185,19 +1185,19 @@
113: 19(int) ShiftRightLogical 112 24
Store 74(byteAddrTemp) 113
114: 19(int) Load 74(byteAddrTemp)
- 115: 30(ptr) AccessChain 18 26 114
+ 115: 30(ptr) AccessChain 18(sbuf) 26 114
116: 6(int) Load 115
117: 19(int) Load 74(byteAddrTemp)
118: 19(int) IAdd 117 46
- 119: 30(ptr) AccessChain 18 26 118
+ 119: 30(ptr) AccessChain 18(sbuf) 26 118
120: 6(int) Load 119
121: 19(int) Load 74(byteAddrTemp)
122: 19(int) IAdd 121 24
- 123: 30(ptr) AccessChain 18 26 122
+ 123: 30(ptr) AccessChain 18(sbuf) 26 122
124: 6(int) Load 123
125: 88(ivec3) CompositeConstruct 116 120 124
127: 6(int) CompositeExtract 125 2
- 128: 30(ptr) AccessChain 18 26 111
+ 128: 30(ptr) AccessChain 18(sbuf) 26 111
Store 128 127
130: 6(int) Load 11(pos)
131: 19(int) ShiftRightLogical 130 24
@@ -1207,23 +1207,23 @@
135: 19(int) ShiftRightLogical 134 24
Store 133(byteAddrTemp) 135
136: 19(int) Load 133(byteAddrTemp)
- 137: 30(ptr) AccessChain 18 26 136
+ 137: 30(ptr) AccessChain 18(sbuf) 26 136
138: 6(int) Load 137
139: 19(int) Load 133(byteAddrTemp)
140: 19(int) IAdd 139 46
- 141: 30(ptr) AccessChain 18 26 140
+ 141: 30(ptr) AccessChain 18(sbuf) 26 140
142: 6(int) Load 141
143: 19(int) Load 133(byteAddrTemp)
144: 19(int) IAdd 143 24
- 145: 30(ptr) AccessChain 18 26 144
+ 145: 30(ptr) AccessChain 18(sbuf) 26 144
146: 6(int) Load 145
147: 19(int) Load 133(byteAddrTemp)
149: 19(int) IAdd 147 148
- 150: 30(ptr) AccessChain 18 26 149
+ 150: 30(ptr) AccessChain 18(sbuf) 26 149
151: 6(int) Load 150
153: 152(ivec4) CompositeConstruct 138 142 146 151
154: 6(int) CompositeExtract 153 0
- 155: 30(ptr) AccessChain 18 26 132
+ 155: 30(ptr) AccessChain 18(sbuf) 26 132
Store 155 154
156: 19(int) Load 129(byteAddrTemp)
157: 19(int) IAdd 156 46
@@ -1231,23 +1231,23 @@
159: 19(int) ShiftRightLogical 158 24
Store 133(byteAddrTemp) 159
160: 19(int) Load 133(byteAddrTemp)
- 161: 30(ptr) AccessChain 18 26 160
+ 161: 30(ptr) AccessChain 18(sbuf) 26 160
162: 6(int) Load 161
163: 19(int) Load 133(byteAddrTemp)
164: 19(int) IAdd 163 46
- 165: 30(ptr) AccessChain 18 26 164
+ 165: 30(ptr) AccessChain 18(sbuf) 26 164
166: 6(int) Load 165
167: 19(int) Load 133(byteAddrTemp)
168: 19(int) IAdd 167 24
- 169: 30(ptr) AccessChain 18 26 168
+ 169: 30(ptr) AccessChain 18(sbuf) 26 168
170: 6(int) Load 169
171: 19(int) Load 133(byteAddrTemp)
172: 19(int) IAdd 171 148
- 173: 30(ptr) AccessChain 18 26 172
+ 173: 30(ptr) AccessChain 18(sbuf) 26 172
174: 6(int) Load 173
175: 152(ivec4) CompositeConstruct 162 166 170 174
176: 6(int) CompositeExtract 175 1
- 177: 30(ptr) AccessChain 18 26 157
+ 177: 30(ptr) AccessChain 18(sbuf) 26 157
Store 177 176
178: 19(int) Load 129(byteAddrTemp)
179: 19(int) IAdd 178 24
@@ -1255,23 +1255,23 @@
181: 19(int) ShiftRightLogical 180 24
Store 133(byteAddrTemp) 181
182: 19(int) Load 133(byteAddrTemp)
- 183: 30(ptr) AccessChain 18 26 182
+ 183: 30(ptr) AccessChain 18(sbuf) 26 182
184: 6(int) Load 183
185: 19(int) Load 133(byteAddrTemp)
186: 19(int) IAdd 185 46
- 187: 30(ptr) AccessChain 18 26 186
+ 187: 30(ptr) AccessChain 18(sbuf) 26 186
188: 6(int) Load 187
189: 19(int) Load 133(byteAddrTemp)
190: 19(int) IAdd 189 24
- 191: 30(ptr) AccessChain 18 26 190
+ 191: 30(ptr) AccessChain 18(sbuf) 26 190
192: 6(int) Load 191
193: 19(int) Load 133(byteAddrTemp)
194: 19(int) IAdd 193 148
- 195: 30(ptr) AccessChain 18 26 194
+ 195: 30(ptr) AccessChain 18(sbuf) 26 194
196: 6(int) Load 195
197: 152(ivec4) CompositeConstruct 184 188 192 196
198: 6(int) CompositeExtract 197 2
- 199: 30(ptr) AccessChain 18 26 179
+ 199: 30(ptr) AccessChain 18(sbuf) 26 179
Store 199 198
200: 19(int) Load 129(byteAddrTemp)
201: 19(int) IAdd 200 148
@@ -1279,27 +1279,27 @@
203: 19(int) ShiftRightLogical 202 24
Store 133(byteAddrTemp) 203
204: 19(int) Load 133(byteAddrTemp)
- 205: 30(ptr) AccessChain 18 26 204
+ 205: 30(ptr) AccessChain 18(sbuf) 26 204
206: 6(int) Load 205
207: 19(int) Load 133(byteAddrTemp)
208: 19(int) IAdd 207 46
- 209: 30(ptr) AccessChain 18 26 208
+ 209: 30(ptr) AccessChain 18(sbuf) 26 208
210: 6(int) Load 209
211: 19(int) Load 133(byteAddrTemp)
212: 19(int) IAdd 211 24
- 213: 30(ptr) AccessChain 18 26 212
+ 213: 30(ptr) AccessChain 18(sbuf) 26 212
214: 6(int) Load 213
215: 19(int) Load 133(byteAddrTemp)
216: 19(int) IAdd 215 148
- 217: 30(ptr) AccessChain 18 26 216
+ 217: 30(ptr) AccessChain 18(sbuf) 26 216
218: 6(int) Load 217
219: 152(ivec4) CompositeConstruct 206 210 214 218
221: 6(int) CompositeExtract 219 3
- 222: 30(ptr) AccessChain 18 26 201
+ 222: 30(ptr) AccessChain 18(sbuf) 26 201
Store 222 221
223: 6(int) Load 11(pos)
224: 19(int) ShiftRightLogical 223 24
- 225: 30(ptr) AccessChain 18 26 224
+ 225: 30(ptr) AccessChain 18(sbuf) 26 224
226: 6(int) Load 225
227: 8(float) ConvertUToF 226
228: 9(fvec4) CompositeConstruct 227 227 227 227
diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out
index 1a74192..aeee253 100755
--- a/Test/baseResults/spv.Operations.frag.out
+++ b/Test/baseResults/spv.Operations.frag.out
@@ -3,12 +3,12 @@
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 509
+// Id's are bound by 532
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 11 22 212 288 485 503 508
+ EntryPoint Fragment 4 "main" 11 22 212 288 485 526 531
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
@@ -24,13 +24,15 @@
Name 305 "b"
Name 342 "ub42"
Name 485 "FragColor"
- Name 503 "uiv4"
- Name 505 "ub"
- Name 508 "uuv4"
+ Name 503 "m1"
+ Name 510 "m2"
+ Name 526 "uiv4"
+ Name 528 "ub"
+ Name 531 "uuv4"
Decorate 22(ui) Flat
Decorate 288(uui) Flat
- Decorate 503(uiv4) Flat
- Decorate 508(uuv4) Flat
+ Decorate 526(uiv4) Flat
+ Decorate 531(uuv4) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -65,14 +67,24 @@
472: 18(int) Constant 17
484: TypePointer Output 7(fvec4)
485(FragColor): 484(ptr) Variable Output
- 501: TypeVector 18(int) 4
- 502: TypePointer Input 501(ivec4)
- 503(uiv4): 502(ptr) Variable Input
- 504: TypePointer Private 178(bool)
- 505(ub): 504(ptr) Variable Private
- 506: TypeVector 141(int) 4
- 507: TypePointer Input 506(ivec4)
- 508(uuv4): 507(ptr) Variable Input
+ 501: TypeMatrix 7(fvec4) 4
+ 502: TypePointer Function 501
+ 504: 6(float) Constant 0
+ 505: 7(fvec4) ConstantComposite 461 504 504 504
+ 506: 7(fvec4) ConstantComposite 504 461 504 504
+ 507: 7(fvec4) ConstantComposite 504 504 461 504
+ 508: 7(fvec4) ConstantComposite 504 504 504 461
+ 509: 501 ConstantComposite 505 506 507 508
+ 511: 7(fvec4) ConstantComposite 504 504 504 504
+ 512: 501 ConstantComposite 511 511 511 511
+ 524: TypeVector 18(int) 4
+ 525: TypePointer Input 524(ivec4)
+ 526(uiv4): 525(ptr) Variable Input
+ 527: TypePointer Private 178(bool)
+ 528(ub): 527(ptr) Variable Private
+ 529: TypeVector 141(int) 4
+ 530: TypePointer Input 529(ivec4)
+ 531(uuv4): 530(ptr) Variable Input
4(main): 2 Function None 3
5: Label
9(v): 8(ptr) Variable Function
@@ -81,6 +93,9 @@
285(u): 284(ptr) Variable Function
305(b): 304(ptr) Variable Function
486: 8(ptr) Variable Function
+ 503(m1): 502(ptr) Variable Function
+ 510(m2): 502(ptr) Variable Function
+ 513: 502(ptr) Variable Function
12: 7(fvec4) Load 11(uv4)
13: 7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12
Store 9(v) 13
@@ -666,5 +681,24 @@
489: Label
500: 7(fvec4) Load 486
Store 485(FragColor) 500
+ Store 503(m1) 509
+ Store 510(m2) 512
+ 514: 178(bool) Load 305(b)
+ SelectionMerge 516 None
+ BranchConditional 514 515 518
+ 515: Label
+ 517: 501 Load 503(m1)
+ Store 513 517
+ Branch 516
+ 518: Label
+ 519: 501 Load 510(m2)
+ Store 513 519
+ Branch 516
+ 516: Label
+ 520: 8(ptr) AccessChain 513 405
+ 521: 7(fvec4) Load 520
+ 522: 7(fvec4) Load 485(FragColor)
+ 523: 7(fvec4) FAdd 522 521
+ Store 485(FragColor) 523
Return
FunctionEnd
diff --git a/Test/baseResults/spv.deviceGroup.frag.out b/Test/baseResults/spv.deviceGroup.frag.out
index beaf906..9c23443 100755
--- a/Test/baseResults/spv.deviceGroup.frag.out
+++ b/Test/baseResults/spv.deviceGroup.frag.out
@@ -13,11 +13,11 @@
EntryPoint Fragment 4 "main" 9
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
- SourceExtension "GL_KHX_device_group"
+ SourceExtension "GL_EXT_device_group"
Name 4 "main"
Name 9 "color"
- Name 12 "gl_DeviceIndexKHR"
- Decorate 12(gl_DeviceIndexKHR) BuiltIn DeviceIndex
+ Name 12 "gl_DeviceIndex"
+ Decorate 12(gl_DeviceIndex) BuiltIn DeviceIndex
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -26,11 +26,11 @@
9(color): 8(ptr) Variable Output
10: TypeInt 32 1
11: TypePointer UniformConstant 10(int)
-12(gl_DeviceIndexKHR): 11(ptr) Variable UniformConstant
+12(gl_DeviceIndex): 11(ptr) Variable UniformConstant
15: 6(float) Constant 0
4(main): 2 Function None 3
5: Label
- 13: 10(int) Load 12(gl_DeviceIndexKHR)
+ 13: 10(int) Load 12(gl_DeviceIndex)
14: 6(float) ConvertSToF 13
16: 7(fvec4) CompositeConstruct 14 15 15 15
Store 9(color) 16
diff --git a/Test/baseResults/spv.multiView.frag.out b/Test/baseResults/spv.multiView.frag.out
index bfd8b48..9571617 100755
--- a/Test/baseResults/spv.multiView.frag.out
+++ b/Test/baseResults/spv.multiView.frag.out
@@ -13,11 +13,11 @@
EntryPoint Fragment 4 "main" 9
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
- SourceExtension "GL_KHX_multiview"
+ SourceExtension "GL_EXT_multiview"
Name 4 "main"
Name 9 "color"
- Name 12 "gl_ViewIndexKHR"
- Decorate 12(gl_ViewIndexKHR) BuiltIn ViewIndex
+ Name 12 "gl_ViewIndex"
+ Decorate 12(gl_ViewIndex) BuiltIn ViewIndex
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -26,11 +26,11 @@
9(color): 8(ptr) Variable Output
10: TypeInt 32 1
11: TypePointer UniformConstant 10(int)
-12(gl_ViewIndexKHR): 11(ptr) Variable UniformConstant
+12(gl_ViewIndex): 11(ptr) Variable UniformConstant
15: 6(float) Constant 0
4(main): 2 Function None 3
5: Label
- 13: 10(int) Load 12(gl_ViewIndexKHR)
+ 13: 10(int) Load 12(gl_ViewIndex)
14: 6(float) ConvertSToF 13
16: 7(fvec4) CompositeConstruct 14 15 15 15
Store 9(color) 16
diff --git a/Test/baseResults/spv.pushConstantAnon.vert.out b/Test/baseResults/spv.pushConstantAnon.vert.out
new file mode 100755
index 0000000..9559815
--- /dev/null
+++ b/Test/baseResults/spv.pushConstantAnon.vert.out
@@ -0,0 +1,66 @@
+spv.pushConstantAnon.vert
+Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 38
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 24
+ Source GLSL 400
+ Name 4 "main"
+ Name 11 "Material"
+ MemberName 11(Material) 0 "kind"
+ MemberName 11(Material) 1 "fa"
+ Name 13 ""
+ Name 24 "color"
+ Decorate 10 ArrayStride 4
+ MemberDecorate 11(Material) 0 Offset 0
+ MemberDecorate 11(Material) 1 Offset 4
+ Decorate 11(Material) Block
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypeFloat 32
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 3
+ 10: TypeArray 7(float) 9
+ 11(Material): TypeStruct 6(int) 10
+ 12: TypePointer PushConstant 11(Material)
+ 13: 12(ptr) Variable PushConstant
+ 14: 6(int) Constant 0
+ 15: TypePointer PushConstant 6(int)
+ 22: TypeVector 7(float) 4
+ 23: TypePointer Output 22(fvec4)
+ 24(color): 23(ptr) Variable Output
+ 25: 7(float) Constant 1045220557
+ 26: 22(fvec4) ConstantComposite 25 25 25 25
+ 28: 7(float) Constant 1056964608
+ 29: 22(fvec4) ConstantComposite 28 28 28 28
+ 31: 6(int) Constant 1
+ 32: TypePointer PushConstant 7(float)
+ 4(main): 2 Function None 3
+ 5: Label
+ 16: 15(ptr) AccessChain 13 14
+ 17: 6(int) Load 16
+ SelectionMerge 21 None
+ Switch 17 20
+ case 1: 18
+ case 2: 19
+ 20: Label
+ 33: 32(ptr) AccessChain 13 31 31
+ 34: 7(float) Load 33
+ 35: 22(fvec4) CompositeConstruct 34 34 34 34
+ Store 24(color) 35
+ Branch 21
+ 18: Label
+ Store 24(color) 26
+ Branch 21
+ 19: Label
+ Store 24(color) 29
+ Branch 21
+ 21: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ssbo.autoassign.frag.out b/Test/baseResults/spv.ssbo.autoassign.frag.out
index 6502faf..8d10b6b 100644
--- a/Test/baseResults/spv.ssbo.autoassign.frag.out
+++ b/Test/baseResults/spv.ssbo.autoassign.frag.out
@@ -16,15 +16,15 @@
MemberName 14(BufType) 0 "va"
MemberName 14(BufType) 1 "vb"
Name 16 "SB0"
- MemberName 16(SB0) 0 "SB0"
- Name 18 ""
+ MemberName 16(SB0) 0 "@data"
+ Name 18 "SB0"
Name 26 "TestCB"
MemberName 26(TestCB) 0 "W"
MemberName 26(TestCB) 1 "H"
Name 28 ""
Name 55 "SB1"
- MemberName 55(SB1) 0 "SB1"
- Name 57 ""
+ MemberName 55(SB1) 0 "@data"
+ Name 57 "SB1"
Name 86 "pos"
Name 88 "pos"
Name 91 "@entryPointOutput"
@@ -37,8 +37,8 @@
MemberDecorate 16(SB0) 0 NonWritable
MemberDecorate 16(SB0) 0 Offset 0
Decorate 16(SB0) BufferBlock
- Decorate 18 DescriptorSet 0
- Decorate 18 Binding 30
+ Decorate 18(SB0) DescriptorSet 0
+ Decorate 18(SB0) Binding 30
MemberDecorate 26(TestCB) 0 Offset 0
MemberDecorate 26(TestCB) 1 Offset 4
Decorate 26(TestCB) Block
@@ -47,8 +47,8 @@
Decorate 54 ArrayStride 32
MemberDecorate 55(SB1) 0 Offset 0
Decorate 55(SB1) BufferBlock
- Decorate 57 DescriptorSet 0
- Decorate 57 Binding 31
+ Decorate 57(SB1) DescriptorSet 0
+ Decorate 57(SB1) Binding 31
Decorate 88(pos) Location 0
Decorate 91(@entryPointOutput) Location 0
2: TypeVoid
@@ -61,7 +61,7 @@
15: TypeRuntimeArray 14(BufType)
16(SB0): TypeStruct 15
17: TypePointer Uniform 16(SB0)
- 18: 17(ptr) Variable Uniform
+ 18(SB0): 17(ptr) Variable Uniform
19: TypeInt 32 1
20: 19(int) Constant 0
21: TypeInt 32 0
@@ -77,7 +77,7 @@
54: TypeRuntimeArray 14(BufType)
55(SB1): TypeStruct 54
56: TypePointer Uniform 55(SB1)
- 57: 56(ptr) Variable Uniform
+ 57(SB1): 56(ptr) Variable Uniform
87: TypePointer Input 7(fvec4)
88(pos): 87(ptr) Variable Input
90: TypePointer Output 7(fvec4)
@@ -107,7 +107,7 @@
35: 23(ptr) AccessChain 10(pos) 34
36: 6(float) Load 35
37: 6(float) FAdd 33 36
- 39: 38(ptr) AccessChain 18 20 37 20
+ 39: 38(ptr) AccessChain 18(SB0) 20 37 20
40: 7(fvec4) Load 39
41: 23(ptr) AccessChain 10(pos) 22
42: 6(float) Load 41
@@ -118,7 +118,7 @@
47: 23(ptr) AccessChain 10(pos) 34
48: 6(float) Load 47
49: 6(float) FAdd 46 48
- 51: 38(ptr) AccessChain 18 20 49 50
+ 51: 38(ptr) AccessChain 18(SB0) 20 49 50
52: 7(fvec4) Load 51
53: 7(fvec4) FAdd 40 52
Store 13(vTmp) 53
@@ -131,7 +131,7 @@
64: 23(ptr) AccessChain 10(pos) 34
65: 6(float) Load 64
66: 6(float) FAdd 63 65
- 67: 38(ptr) AccessChain 57 20 66 20
+ 67: 38(ptr) AccessChain 57(SB1) 20 66 20
68: 7(fvec4) Load 67
69: 23(ptr) AccessChain 10(pos) 22
70: 6(float) Load 69
@@ -142,7 +142,7 @@
75: 23(ptr) AccessChain 10(pos) 34
76: 6(float) Load 75
77: 6(float) FAdd 74 76
- 78: 38(ptr) AccessChain 57 20 77 50
+ 78: 38(ptr) AccessChain 57(SB1) 20 77 50
79: 7(fvec4) Load 78
80: 7(fvec4) FAdd 68 79
81: 7(fvec4) Load 13(vTmp)
diff --git a/Test/baseResults/tokenPaste.vert.out b/Test/baseResults/tokenPaste.vert.out
index 9a06c34..4bab57b 100755
--- a/Test/baseResults/tokenPaste.vert.out
+++ b/Test/baseResults/tokenPaste.vert.out
@@ -5,7 +5,10 @@
ERROR: 0:49: '##' : combined tokens are too long
ERROR: 0:52: '##' : not supported for these tokens
ERROR: 0:69: '##' : combined token is invalid
-ERROR: 5 compilation errors. No code generated.
+ERROR: 0:82: 'macro expansion' : Too few args in Macro rec
+ERROR: 0:82: '##' : unexpected location
+ERROR: 0:82: '##' : unexpected location
+ERROR: 8 compilation errors. No code generated.
Shader version: 450
diff --git a/Test/baseResults/vulkan.frag.out b/Test/baseResults/vulkan.frag.out
index 0e3057e..f4a81a0 100644
--- a/Test/baseResults/vulkan.frag.out
+++ b/Test/baseResults/vulkan.frag.out
@@ -19,7 +19,6 @@
ERROR: 0:43: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
ERROR: 0:43: 'push_constant' : can only be used with a block
ERROR: 0:45: 'push_constant' : cannot declare a default, can only be used on a block
-ERROR: 0:47: 'push_constant' : requires an instance name
ERROR: 0:52: 'input_attachment_index' : can only be used with a subpass
ERROR: 0:53: 'input_attachment_index' : can only be used with a subpass
ERROR: 0:54: 'subpass' : requires an input_attachment_index layout qualifier
@@ -41,7 +40,7 @@
ERROR: 0:94: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type 'temp sampler2D' and a right operand of type 'temp sampler2D' (or there is no acceptable conversion)
ERROR: 0:94: 'call argument' : sampler constructor must appear at point of use
ERROR: 0:96: 'gl_NumSamples' : undeclared identifier
-ERROR: 39 compilation errors. No code generated.
+ERROR: 38 compilation errors. No code generated.
ERROR: Linking fragment stage: Only one push_constant block is allowed per stage
diff --git a/Test/hlsl.if.frag b/Test/hlsl.if.frag
index ba659e6..b62eda1 100644
--- a/Test/hlsl.if.frag
+++ b/Test/hlsl.if.frag
@@ -30,4 +30,6 @@
if (float ii = input.z)
++ii;
++ii;
+ if (float(ii) == 1.0)
+ ++ii;
}
diff --git a/Test/hlsl.numericsuffixes.frag b/Test/hlsl.numericsuffixes.frag
index 60b2572..bccb786 100644
--- a/Test/hlsl.numericsuffixes.frag
+++ b/Test/hlsl.numericsuffixes.frag
@@ -13,6 +13,10 @@
int r06 = 6L; // upper long int
int r07 = 071; // octal
uint r08 = 072u; // unsigned octal
+ float r09 = 1.h; // half
+ float r10 = 1.H; // half
+ float r11 = 1.1h; // half
+ float r12 = 1.1H; // half
PS_OUTPUT ps_output;
ps_output.color = r07; // gets 71 octal = 57 decimal
diff --git a/Test/hlsl.struct.frag b/Test/hlsl.struct.frag
index e602c9e..33199e0 100644
--- a/Test/hlsl.struct.frag
+++ b/Test/hlsl.struct.frag
@@ -12,7 +12,7 @@
myS s1;
-static struct {
+static class {
float4 i;
} s2;
@@ -30,14 +30,24 @@
float ff5 : packoffset(c101.y) : register(ps_5_0, s[5]);
float ff6 : packoffset(c102.y) : register(s3[5]);
+struct empty {};
+
+struct containEmpty {
+ empty e;
+};
+
float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0
{
- struct FS {
+ class FS {
bool3 b3;
} s3;
s3 == s3;
s2.i = s.ff4;
+ containEmpty ce;
+ empty e;
+ e = ce.e;
+
return input;
}
diff --git a/Test/hlsl.structStructName.frag b/Test/hlsl.structStructName.frag
new file mode 100755
index 0000000..f8bf90c
--- /dev/null
+++ b/Test/hlsl.structStructName.frag
@@ -0,0 +1,7 @@
+struct S { int s; };
+
+int main()
+{
+ struct S t;
+ return t.s;
+}
diff --git a/Test/hlsl.structbuffer.fn.frag b/Test/hlsl.structbuffer.fn.frag
new file mode 100644
index 0000000..d043d3b
--- /dev/null
+++ b/Test/hlsl.structbuffer.fn.frag
@@ -0,0 +1,24 @@
+
+StructuredBuffer<uint4> sbuf : register(t10);
+
+uint4 get(in StructuredBuffer<uint4> sb, uint bufferOffset)
+{
+ return sb[bufferOffset];
+}
+
+void set(in RWStructuredBuffer<uint4> sb, uint bufferOffset, uint4 data)
+{
+ sb[bufferOffset] = data;
+}
+
+RWStructuredBuffer<uint4> sbuf2;
+
+// Not shared, because of type difference.
+StructuredBuffer<uint3> sbuf3 : register(t12);
+
+float4 main(uint pos : FOO) : SV_Target0
+{
+ set(sbuf2, 2, get(sbuf, 3));
+
+ return 0;
+}
diff --git a/Test/spv.Operations.frag b/Test/spv.Operations.frag
index 5c8c8af..52f0a30 100644
--- a/Test/spv.Operations.frag
+++ b/Test/spv.Operations.frag
@@ -135,4 +135,7 @@
b = !b;
FragColor = b ? vec4(i) + vec4(f) + v : v;
+
+ mat4 m1 = mat4(1.0), m2 = mat4(0.0);
+ FragColor += (b ? m1 : m2)[1];
}
diff --git a/Test/spv.deviceGroup.frag b/Test/spv.deviceGroup.frag
index 9bc6b56..6496489 100644
--- a/Test/spv.deviceGroup.frag
+++ b/Test/spv.deviceGroup.frag
@@ -1,9 +1,9 @@
#version 450
-#extension GL_KHX_device_group : enable
+#extension GL_EXT_device_group : enable
out vec4 color;
void main() {
- color = vec4(gl_DeviceIndexKHR, 0, 0, 0);
+ color = vec4(gl_DeviceIndex, 0, 0, 0);
}
diff --git a/Test/spv.multiView.frag b/Test/spv.multiView.frag
index 99348e2..47c2763 100644
--- a/Test/spv.multiView.frag
+++ b/Test/spv.multiView.frag
@@ -1,9 +1,9 @@
#version 450
-#extension GL_KHX_multiview : enable
+#extension GL_EXT_multiview : enable
out vec4 color;
void main() {
- color = vec4(gl_ViewIndexKHR, 0, 0, 0);
+ color = vec4(gl_ViewIndex, 0, 0, 0);
}
diff --git a/Test/spv.pushConstantAnon.vert b/Test/spv.pushConstantAnon.vert
new file mode 100644
index 0000000..c4438b7
--- /dev/null
+++ b/Test/spv.pushConstantAnon.vert
@@ -0,0 +1,17 @@
+#version 400
+
+layout(push_constant) uniform Material {
+ int kind;
+ float fa[3];
+};
+
+out vec4 color;
+
+void main()
+{
+ switch (kind) {
+ case 1: color = vec4(0.2); break;
+ case 2: color = vec4(0.5); break;
+ default: color = vec4(fa[1]); break;
+ }
+}
diff --git a/Test/tokenPaste.vert b/Test/tokenPaste.vert
index 369b7b8..7aa113a 100644
--- a/Test/tokenPaste.vert
+++ b/Test/tokenPaste.vert
@@ -77,3 +77,6 @@
#define M_NEST2(q) int q ## suff
#define M_OUTER2(p) M_NEST2(p ## 20)
uniform M_OUTER2(argPaste);
+
+#define rec(x)##
+rec(rec())
\ No newline at end of file
diff --git a/Test/vulkan.frag b/Test/vulkan.frag
index 16baf86..2b686eb 100644
--- a/Test/vulkan.frag
+++ b/Test/vulkan.frag
@@ -46,7 +46,7 @@
layout(push_constant) uniform pcb2 {
int a;
-}; // ERROR, no instance name
+}; // Okay now to have no instance name
layout(input_attachment_index = 2) uniform subpassInput subD;
layout(input_attachment_index = 3) uniform texture2D subDbad1; // ERROR, not a texture
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index 76c6c5a..342c5d1 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 "Overload400-PrecQual.1854"
-#define GLSLANG_DATE "27-Feb-2017"
+#define GLSLANG_REVISION "Overload400-PrecQual.1887"
+#define GLSLANG_DATE "08-Mar-2017"
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 1e99eb5..60cff60 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -3702,8 +3702,8 @@
}
if (profile != EEsProfile) {
- commonBuiltins.append("uniform int gl_ViewIndexKHR;");
- commonBuiltins.append("uniform int gl_DeviceIndexKHR;"); // GL_KHX_device_group
+ commonBuiltins.append("uniform int gl_ViewIndex;");
+ commonBuiltins.append("uniform int gl_DeviceIndex;"); // GL_EXT_device_group
}
// printf("%s\n", commonBuiltins.c_str());
@@ -5318,10 +5318,10 @@
}
if (profile != EEsProfile) {
- symbolTable.setFunctionExtensions("gl_DeviceIndexKHR", 1, &E_GL_KHX_device_group);
- BuiltInVariable("gl_DeviceIndexKHR", EbvDeviceIndex, symbolTable);
- symbolTable.setFunctionExtensions("gl_ViewIndexKHR", 1, &E_GL_KHX_multiview);
- BuiltInVariable("gl_ViewIndexKHR", EbvViewIndex, symbolTable);
+ symbolTable.setFunctionExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group);
+ BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable);
+ symbolTable.setFunctionExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview);
+ BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable);
}
break;
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
index 2ebd741..8abd9e3 100644
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -1158,15 +1158,15 @@
return nullptr;
TIntermAggregate* aggNode = nullptr;
- if (left)
+ if (left != nullptr)
aggNode = left->getAsAggregate();
- if (! aggNode || aggNode->getOp() != EOpNull) {
+ if (aggNode == nullptr || aggNode->getOp() != EOpNull) {
aggNode = new TIntermAggregate;
- if (left)
+ if (left != nullptr)
aggNode->getSequence().push_back(left);
}
- if (right)
+ if (right != nullptr)
aggNode->getSequence().push_back(right);
return aggNode;
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index db77b41..78f459a 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -5597,11 +5597,10 @@
mergeObjectLayoutQualifiers(defaultQualification, currentBlockQualifier, true);
- // "The offset qualifier can only be used on block members of blocks declared with std140 or std430 layouts."
// "The align qualifier can only be used on blocks or block members, and only for blocks declared with std140 or std430 layouts."
- if (currentBlockQualifier.hasAlign() || currentBlockQualifier.hasAlign()) {
+ if (currentBlockQualifier.hasAlign()) {
if (defaultQualification.layoutPacking != ElpStd140 && defaultQualification.layoutPacking != ElpStd430) {
- error(loc, "can only be used with std140 or std430 layout packing", "offset/align", "");
+ error(loc, "can only be used with std140 or std430 layout packing", "align", "");
defaultQualification.layoutAlign = -1;
}
}
@@ -5643,9 +5642,12 @@
}
} else
memberWithoutLocation = true;
- if (memberQualifier.hasAlign()) {
+
+ // "The offset qualifier can only be used on block members of blocks declared with std140 or std430 layouts."
+ // "The align qualifier can only be used on blocks or block members, and only for blocks declared with std140 or std430 layouts."
+ if (memberQualifier.hasAlign() || memberQualifier.hasOffset()) {
if (defaultQualification.layoutPacking != ElpStd140 && defaultQualification.layoutPacking != ElpStd430)
- error(memberLoc, "can only be used with std140 or std430 layout packing", "align", "");
+ error(memberLoc, "can only be used with std140 or std430 layout packing", "offset/align", "");
}
TQualifier newMemberQualification = defaultQualification;
@@ -5795,11 +5797,8 @@
error(loc, "cannot use sample qualifier on an interface block", "sample", "");
if (qualifier.invariant)
error(loc, "cannot use invariant qualifier on an interface block", "invariant", "");
- if (qualifier.layoutPushConstant) {
+ if (qualifier.layoutPushConstant)
intermediate.addPushConstantCount();
- if (! instanceName)
- error(loc, "requires an instance name", "push_constant", "");
- }
}
//
diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index 080a5e0..bed60fe 100644
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -103,7 +103,11 @@
mangledName += "M";
break;
case EbtStruct:
- mangledName += "struct-";
+ case EbtBlock:
+ if (basicType == EbtStruct)
+ mangledName += "struct-";
+ else
+ mangledName += "block-";
if (typeName)
mangledName += *typeName;
for (unsigned int i = 0; i < structure->size(); ++i) {
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index 637ed93..6a09150 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -233,9 +233,9 @@
extensionBehavior[E_GL_OES_texture_buffer] = EBhDisable;
extensionBehavior[E_GL_OES_texture_cube_map_array] = EBhDisable;
- // KHX extensions
- extensionBehavior[E_GL_KHX_device_group] = EBhDisable;
- extensionBehavior[E_GL_KHX_multiview] = EBhDisable;
+ // EXT extensions
+ extensionBehavior[E_GL_EXT_device_group] = EBhDisable;
+ extensionBehavior[E_GL_EXT_multiview] = EBhDisable;
}
// Get code that is not part of a shared symbol table, is specific to this shader,
@@ -687,7 +687,7 @@
}
#ifdef AMD_EXTENSIONS
-// Call for any operation needing GLSL float16 data-type support.
+// Call for any operation needing float16 data-type support.
void TParseVersions::float16Check(const TSourceLoc& loc, const char* op, bool builtIn)
{
if (!builtIn) {
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index 26712d0..7f5d33d 100644
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -132,9 +132,9 @@
const char* const E_GL_EXT_shader_non_constant_global_initializers = "GL_EXT_shader_non_constant_global_initializers";
const char* const E_GL_EXT_shader_image_load_formatted = "GL_EXT_shader_image_load_formatted";
-// KHX extensions
-const char* const E_GL_KHX_device_group = "GL_KHX_device_group";
-const char* const E_GL_KHX_multiview = "GL_KHX_multiview";
+// EXT extensions
+const char* const E_GL_EXT_device_group = "GL_EXT_device_group";
+const char* const E_GL_EXT_multiview = "GL_EXT_multiview";
// #line and #include
const char* const E_GL_GOOGLE_cpp_style_line_directive = "GL_GOOGLE_cpp_style_line_directive";
diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp
index ef8e83e..590290b 100644
--- a/glslang/MachineIndependent/preprocessor/Pp.cpp
+++ b/glslang/MachineIndependent/preprocessor/Pp.cpp
@@ -986,6 +986,8 @@
int token;
while ((token = scanToken(ppToken)) != tMarkerInput::marker && token != EndOfInput) {
token = tokenPaste(token, *ppToken);
+ if (token == tMarkerInput::marker || token == EndOfInput)
+ break;
if (token == PpAtomIdentifier && MacroExpand(ppToken, false, newLineOkay) != 0)
continue;
expandedArg->putToken(token, ppToken);
@@ -1050,7 +1052,7 @@
// TODO: preprocessor: properly handle whitespace (or lack of it) between tokens when expanding
if (token == PpAtomIdentifier) {
int i;
- for (i = mac->args.size() - 1; i >= 0; i--)
+ for (i = (int)mac->args.size() - 1; i >= 0; i--)
if (strcmp(pp->atomStrings.getString(mac->args[i]), ppToken->name) == 0)
break;
if (i >= 0) {
diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h
index f7b3522..f1c41ab 100644
--- a/glslang/MachineIndependent/preprocessor/PpContext.h
+++ b/glslang/MachineIndependent/preprocessor/PpContext.h
@@ -236,7 +236,7 @@
void reset() { current = 0; }
protected:
- void putSubtoken(int);
+ void putSubtoken(char);
int getSubtoken();
void ungetSubtoken();
diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
index a304424..89748fb 100644
--- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
@@ -101,9 +101,16 @@
{
bool HasDecimalOrExponent = false;
int isDouble = 0;
+ bool generateFloat16 = false;
+ bool acceptFloat16 = parseContext.intermediate.getSource() == EShSourceHlsl;
+ bool isFloat16 = false;
+ bool requireHF = false;
#ifdef AMD_EXTENSIONS
- int isFloat16 = 0;
- bool enableFloat16 = parseContext.version >= 450 && parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float);
+ if (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float)) {
+ acceptFloat16 = true;
+ generateFloat16 = true;
+ requireHF = true;
+ }
#endif
const auto saveName = [&](int ch) {
@@ -158,21 +165,27 @@
saveName(ch2);
isDouble = 1;
}
+ } else if (acceptFloat16 && (ch == 'h' || ch == 'H')) {
#ifdef AMD_EXTENSIONS
- } else if (enableFloat16 && (ch == 'h' || ch == 'H')) {
- parseContext.float16Check(ppToken->loc, "half floating-point suffix");
+ if (generateFloat16)
+ parseContext.float16Check(ppToken->loc, "half floating-point suffix");
+#endif
if (!HasDecimalOrExponent)
parseContext.ppError(ppToken->loc, "float literal needs a decimal point or exponent", "", "");
- int ch2 = getChar();
- if (ch2 != 'f' && ch2 != 'F') {
- ungetChar();
- ungetChar();
+ if (requireHF) {
+ int ch2 = getChar();
+ if (ch2 != 'f' && ch2 != 'F') {
+ ungetChar();
+ ungetChar();
+ } else {
+ saveName(ch);
+ saveName(ch2);
+ isFloat16 = generateFloat16;
+ }
} else {
saveName(ch);
- saveName(ch2);
- isFloat16 = 1;
+ isFloat16 = generateFloat16;
}
-#endif
} else if (ch == 'f' || ch == 'F') {
parseContext.profileRequires(ppToken->loc, EEsProfile, 300, nullptr, "floating-point suffix");
if (! parseContext.relaxedErrors())
@@ -197,10 +210,8 @@
// Return the right token type
if (isDouble)
return PpAtomConstDouble;
-#ifdef AMD_EXTENSIONS
else if (isFloat16)
return PpAtomConstFloat16;
-#endif
else
return PpAtomConstFloat;
}
@@ -216,6 +227,15 @@
int ii = 0;
unsigned long long ival = 0;
bool enableInt64 = pp->parseContext.version >= 450 && pp->parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64);
+ bool acceptHalf = pp->parseContext.intermediate.getSource() == EShSourceHlsl;
+#ifdef AMD_EXTENSIONS
+ if (pp->parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float))
+ acceptHalf = true;
+#endif
+
+ const auto floatingPointChar = [&](int ch) { return ch == '.' || ch == 'e' || ch == 'E' ||
+ ch == 'f' || ch == 'F' ||
+ (acceptHalf && (ch == 'h' || ch == 'H')); };
ppToken->ival = 0;
ppToken->i64val = 0;
@@ -380,7 +400,7 @@
ch = getch();
} while (ch >= '0' && ch <= '9');
}
- if (ch == '.' || ch == 'e' || ch == 'f' || ch == 'E' || ch == 'F')
+ if (floatingPointChar(ch))
return pp->lFloatConst(len, ch, ppToken);
// wasn't a float, so must be octal...
@@ -435,9 +455,9 @@
}
ch = getch();
} while (ch >= '0' && ch <= '9');
- if (ch == '.' || ch == 'e' || ch == 'f' || ch == 'E' || ch == 'F') {
+ if (floatingPointChar(ch))
return pp->lFloatConst(len, ch, ppToken);
- } else {
+ else {
// Finish handling signed and unsigned integers
int numericLen = len;
bool isUnsigned = false;
diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp
index 32d2b0b..7fa06a5 100644
--- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp
@@ -96,9 +96,8 @@
namespace glslang {
// push onto back of stream
-void TPpContext::TokenStream::putSubtoken(int subtoken)
+void TPpContext::TokenStream::putSubtoken(char subtoken)
{
- assert((subtoken & ~0xff) == 0);
data.push_back(static_cast<unsigned char>(subtoken));
}
@@ -125,7 +124,8 @@
const char* s;
char* str = NULL;
- putSubtoken(token);
+ assert((token & ~0xff) == 0);
+ putSubtoken(static_cast<char>(token));
switch (token) {
case PpAtomIdentifier:
diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.h b/glslang/MachineIndependent/preprocessor/PpTokens.h
index 9695c2f..923fd9f 100644
--- a/glslang/MachineIndependent/preprocessor/PpTokens.h
+++ b/glslang/MachineIndependent/preprocessor/PpTokens.h
@@ -127,9 +127,7 @@
PpAtomConstUint64,
PpAtomConstFloat,
PpAtomConstDouble,
-#ifdef AMD_EXTENSIONS
PpAtomConstFloat16,
-#endif
PpAtomConstString,
// Identifiers
diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h
index 8628dff..8aa9baa 100644
--- a/glslang/Public/ShaderLang.h
+++ b/glslang/Public/ShaderLang.h
@@ -203,14 +203,6 @@
EShMessages messages = EShMsgDefault // warnings and errors
);
-SH_IMPORT_EXPORT int ShLink(
- const ShHandle, // linker object
- const ShHandle h[], // compiler objects to link together
- const int numHandles,
- ShHandle uniformMap, // updated with new uniforms
- short int** uniformsAccessed, // returned with indexes of uniforms accessed
- int* numUniformsAccessed);
-
SH_IMPORT_EXPORT int ShLinkExt(
const ShHandle, // linker object
const ShHandle h[], // compiler objects to link together
diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp
index 910f439..689a015 100644
--- a/gtests/Hlsl.FromFile.cpp
+++ b/gtests/Hlsl.FromFile.cpp
@@ -226,10 +226,12 @@
{"hlsl.structbuffer.atomics.frag", "main"},
{"hlsl.structbuffer.byte.frag", "main"},
{"hlsl.structbuffer.coherent.frag", "main"},
+ {"hlsl.structbuffer.fn.frag", "main"},
{"hlsl.structbuffer.rw.frag", "main"},
{"hlsl.structbuffer.rwbyte.frag", "main"},
{"hlsl.structin.vert", "main"},
{"hlsl.structIoFourWay.frag", "main"},
+ {"hlsl.structStructName.frag", "main"},
{"hlsl.intrinsics.vert", "VertexShaderFunction"},
{"hlsl.matType.frag", "PixelShaderFunction"},
{"hlsl.matType.bool.frag", "main"},
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index 10577bd..1043ecb 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -295,6 +295,7 @@
"spv.separate.frag",
"spv.shortCircuit.frag",
"spv.pushConstant.vert",
+ "spv.pushConstantAnon.vert",
"spv.subpass.frag",
"spv.specConstant.vert",
"spv.specConstant.comp",
diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp
index 974c895..4b4b0de 100755
--- a/hlsl/hlslGrammar.cpp
+++ b/hlsl/hlslGrammar.cpp
@@ -131,18 +131,13 @@
continue;
// externalDeclaration
- TIntermNode* declarationNode1;
- TIntermNode* declarationNode2 = nullptr; // sometimes the grammar for a single declaration creates two
- if (! acceptDeclaration(declarationNode1, declarationNode2))
+ if (! acceptDeclaration(unitNode))
return false;
-
- // hook it up
- unitNode = intermediate.growAggregate(unitNode, declarationNode1);
- if (declarationNode2 != nullptr)
- unitNode = intermediate.growAggregate(unitNode, declarationNode2);
}
// set root of AST
+ if (unitNode && !unitNode->getAsAggregate())
+ unitNode = intermediate.growAggregate(nullptr, unitNode);
intermediate.setTreeRoot(unitNode);
return true;
@@ -292,21 +287,17 @@
// as above. (The 'identifier' in the first item in init_declarator list is the
// same as 'identifier' for function declarations.)
//
-// 'node' could get populated if the declaration creates code, like an initializer
-// or a function body.
+// This can generate more than one subtree, one per initializer or a function body.
+// All initializer subtrees are put in their own aggregate node, making one top-level
+// node for all the initializers. Each function created is a top-level node to grow
+// into the passed-in nodeList.
//
-// 'node2' could get populated with a second decoration tree if a single source declaration
-// leads to two subtrees that need to be peers higher up.
+// If 'nodeList' is passed in as non-null, it must an aggregate to extend for
+// each top-level node the declaration creates. Otherwise, if only one top-level
+// node in generated here, that is want is returned in nodeList.
//
-bool HlslGrammar::acceptDeclaration(TIntermNode*& node)
+bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
{
- TIntermNode* node2;
- return acceptDeclaration(node, node2);
-}
-bool HlslGrammar::acceptDeclaration(TIntermNode*& node, TIntermNode*& node2)
-{
- node = nullptr;
- node2 = nullptr;
bool list = false;
// attributes
@@ -324,9 +315,8 @@
// HLSL shaders, this will have to be a master level switch
// As such, the sampler keyword in D3D10+ turns into an automatic sampler type, and is commonly used
// For that reason, this line is commented out
-
- // if (acceptSamplerDeclarationDX9(declaredType))
- // return true;
+ // if (acceptSamplerDeclarationDX9(declaredType))
+ // return true;
// fully_specified_type
if (! acceptFullySpecifiedType(declaredType))
@@ -334,15 +324,22 @@
// identifier
HlslToken idToken;
+ TIntermAggregate* initializers = nullptr;
while (acceptIdentifier(idToken)) {
- TString* fnName = idToken.string;
+ if (peekTokenClass(EHTokLeftParen)) {
+ // looks like function parameters
+ TString* fnName = idToken.string;
- // Potentially rename shader entry point function. No-op most of the time.
- parseContext.renameShaderFunction(fnName);
+ // Potentially rename shader entry point function. No-op most of the time.
+ parseContext.renameShaderFunction(fnName);
- // function_parameters
- TFunction& function = *new TFunction(fnName, declaredType);
- if (acceptFunctionParameters(function)) {
+ // function_parameters
+ TFunction& function = *new TFunction(fnName, declaredType);
+ if (!acceptFunctionParameters(function)) {
+ expected("function parameter list");
+ return false;
+ }
+
// post_decls
acceptPostDecls(function.getWritableType().getQualifier());
@@ -352,7 +349,7 @@
parseContext.error(idToken.loc, "function body can't be in a declarator list", "{", "");
if (typedefDecl)
parseContext.error(idToken.loc, "function body can't be in a typedef", "{", "");
- return acceptFunctionDefinition(function, node, node2, attributes);
+ return acceptFunctionDefinition(function, nodeList, attributes);
} else {
if (typedefDecl)
parseContext.error(idToken.loc, "function typedefs not implemented", "{", "");
@@ -406,36 +403,13 @@
}
}
- TString* blockName = idToken.string;
-
- // For structbuffers, we couldn't create the block type while accepting the
- // template type, because we need the identifier name. Now that we have that,
- // we can create the buffer type.
- // TODO: how to determine this without looking for implicit array sizes?
- if (variableType.getBasicType() == EbtBlock) {
- const int memberCount = variableType.getStruct()->size();
- assert(memberCount > 0);
-
- TType* contentType = (*variableType.getStruct())[memberCount-1].type;
-
- // Set the field name and qualifier from the declaration, now that we know it.
- if (contentType->isRuntimeSizedArray()) {
- contentType->getQualifier() = variableType.getQualifier();
- blockName = nullptr; // this will be an anonymous block...
- contentType->setFieldName(*idToken.string); // field name is declaration name
- variableType.setTypeName(*idToken.string);
- }
- }
-
- // Hand off the actual declaration
-
// TODO: things scoped within an annotation need their own name space;
// TODO: strings are not yet handled.
if (variableType.getBasicType() != EbtString && parseContext.getAnnotationNestingLevel() == 0) {
if (typedefDecl)
parseContext.declareTypedef(idToken.loc, *idToken.string, variableType);
else if (variableType.getBasicType() == EbtBlock)
- parseContext.declareBlock(idToken.loc, variableType, blockName);
+ parseContext.declareBlock(idToken.loc, variableType, idToken.string);
else {
if (variableType.getQualifier().storage == EvqUniform && ! variableType.containsOpaque()) {
// this isn't really an individual variable, but a member of the $Global buffer
@@ -444,10 +418,9 @@
// Declare the variable and add any initializer code to the AST.
// The top-level node is always made into an aggregate, as that's
// historically how the AST has been.
- node = intermediate.growAggregate(node,
- parseContext.declareVariable(idToken.loc, *idToken.string, variableType,
- expressionNode),
- idToken.loc);
+ initializers = intermediate.growAggregate(initializers,
+ parseContext.declareVariable(idToken.loc, *idToken.string, variableType, expressionNode),
+ idToken.loc);
}
}
}
@@ -459,9 +432,15 @@
}
};
- // The top-level node is a sequence.
- if (node != nullptr)
- node->getAsAggregate()->setOperator(EOpSequence);
+ // The top-level initializer node is a sequence.
+ if (initializers != nullptr)
+ initializers->setOperator(EOpSequence);
+
+ // Add the initializers' aggregate to the nodeList we were handed.
+ if (nodeList)
+ nodeList = intermediate.growAggregate(nodeList, initializers);
+ else
+ nodeList = initializers;
// SEMICOLON
if (! acceptTokenClass(EHTokSemicolon)) {
@@ -492,6 +471,12 @@
if (! acceptFullySpecifiedType(type))
return false;
+ // filter out type casts
+ if (peekTokenClass(EHTokLeftParen)) {
+ recedeToken();
+ return false;
+ }
+
// identifier
HlslToken idToken;
if (! acceptIdentifier(idToken)) {
@@ -1006,7 +991,7 @@
break;
// declaration
- TIntermNode* node;
+ TIntermNode* node = nullptr;
if (! acceptDeclaration(node)) {
expected("declaration in annotation");
return false;
@@ -1282,6 +1267,7 @@
return acceptStructBufferType(type);
break;
+ case EHTokClass:
case EHTokStruct:
case EHTokCBuffer:
case EHTokTBuffer:
@@ -1291,9 +1277,8 @@
// An identifier could be for a user-defined type.
// Note we cache the symbol table lookup, to save for a later rule
// when this is not a type.
- token.symbol = parseContext.symbolTable.find(*token.string);
- if (token.symbol && token.symbol->getAsVariable() && token.symbol->getAsVariable()->isUserType()) {
- type.shallowCopy(token.symbol->getType());
+ token.symbol = parseContext.lookupUserType(*token.string, type);
+ if (token.symbol != nullptr) {
advanceToken();
return true;
} else
@@ -1752,9 +1737,11 @@
// struct
// : struct_type IDENTIFIER post_decls LEFT_BRACE struct_declaration_list RIGHT_BRACE
// | struct_type post_decls LEFT_BRACE struct_declaration_list RIGHT_BRACE
+// | struct_type IDENTIFIER // use of previously declared struct type
//
// struct_type
// : STRUCT
+// | CLASS
// | CBUFFER
// | TBUFFER
//
@@ -1770,8 +1757,9 @@
// TBUFFER
else if (acceptTokenClass(EHTokTBuffer))
storageQualifier = EvqBuffer;
+ // CLASS
// STRUCT
- else if (! acceptTokenClass(EHTokStruct))
+ else if (! acceptTokenClass(EHTokClass) && ! acceptTokenClass(EHTokStruct))
return false;
// IDENTIFIER
@@ -1784,12 +1772,18 @@
// post_decls
TQualifier postDeclQualifier;
postDeclQualifier.clear();
- acceptPostDecls(postDeclQualifier);
+ bool postDeclsFound = acceptPostDecls(postDeclQualifier);
// LEFT_BRACE
+ // struct_type IDENTIFIER
if (! acceptTokenClass(EHTokLeftBrace)) {
- expected("{");
- return false;
+ if (structName.size() > 0 && !postDeclsFound && parseContext.lookupUserType(structName, type) != nullptr) {
+ // struct_type IDENTIFIER
+ return true;
+ } else {
+ expected("{");
+ return false;
+ }
}
// struct_declaration_list
@@ -1889,17 +1883,26 @@
unsizedArray.addInnerSize(UnsizedArraySize);
templateType->newArraySizes(unsizedArray);
templateType->getQualifier().storage = storage;
- templateType->getQualifier().readonly = readonly;
+
+ // field name is canonical for all structbuffers
+ templateType->setFieldName("@data");
// Create block type. TODO: hidden internal uint member when needed
+
TTypeList* blockStruct = new TTypeList;
TTypeLoc member = { templateType, token.loc };
blockStruct->push_back(member);
+ // This is the type of the buffer block (SSBO)
TType blockType(blockStruct, "", templateType->getQualifier());
- // It's not until we see the name during declaration that we can set the
- // field name. That happens in HlslGrammar::acceptDeclaration.
+ blockType.getQualifier().storage = storage;
+ blockType.getQualifier().readonly = readonly;
+
+ // We may have created an equivalent type before, in which case we should use its
+ // deep structure.
+ parseContext.shareStructBufferType(blockType);
+
type.shallowCopy(blockType);
return true;
@@ -2113,20 +2116,28 @@
// Do the work to create the function definition in addition to
// parsing the body (compound_statement).
-bool HlslGrammar::acceptFunctionDefinition(TFunction& function, TIntermNode*& node, TIntermNode*& node2, const TAttributeMap& attributes)
+bool HlslGrammar::acceptFunctionDefinition(TFunction& function, TIntermNode*& nodeList, const TAttributeMap& attributes)
{
TFunction& functionDeclarator = parseContext.handleFunctionDeclarator(token.loc, function, false /* not prototype */);
TSourceLoc loc = token.loc;
+ // we might get back and entry-point
+ TIntermNode* entryPointNode = nullptr;
+
// This does a pushScope()
- node = parseContext.handleFunctionDefinition(loc, functionDeclarator, attributes, node2);
+ TIntermNode* functionNode = parseContext.handleFunctionDefinition(loc, functionDeclarator, attributes,
+ entryPointNode);
// compound_statement
TIntermNode* functionBody = nullptr;
if (! acceptCompoundStatement(functionBody))
return false;
- parseContext.handleFunctionBody(loc, functionDeclarator, functionBody, node);
+ parseContext.handleFunctionBody(loc, functionDeclarator, functionBody, functionNode);
+
+ // Hook up the 1 or 2 function definitions.
+ nodeList = intermediate.growAggregate(nodeList, functionNode);
+ nodeList = intermediate.growAggregate(nodeList, entryPointNode);
return true;
}
@@ -2478,6 +2489,7 @@
// | function_call
// | postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET
// | postfix_expression DOT IDENTIFIER
+// | postfix_expression DOT IDENTIFIER arguments
// | postfix_expression INC_OP
// | postfix_expression DEC_OP
//
@@ -2527,8 +2539,8 @@
~tFinalize() { parseContext.finalizeFlattening(); }
HlslParseContext& parseContext;
private:
- const tFinalize& operator=(const tFinalize& f);
- tFinalize(const tFinalize& f);
+ const tFinalize& operator=(const tFinalize&) { return *this; }
+ tFinalize(const tFinalize& f) : parseContext(f.parseContext) { }
} finalize(parseContext);
// Initialize the flattening accumulation data, so we can track data across multiple bracket or
@@ -2559,23 +2571,29 @@
case EOpIndexDirectStruct:
{
// DOT IDENTIFIER
- // includes swizzles and struct members
+ // includes swizzles, member variables, and member functions
HlslToken field;
if (! acceptIdentifier(field)) {
expected("swizzle or member");
return false;
}
- TIntermTyped* base = node; // preserve for method function calls
- node = parseContext.handleDotDereference(field.loc, node, *field.string);
+ if (peekTokenClass(EHTokLeftParen)) {
+ // member function
+ TIntermTyped* thisNode = node;
+ node = parseContext.handleBuiltInMethod(field.loc, node, *field.string);
+ if (node == nullptr) {
+ expected("built-in method");
+ return false;
+ }
- // In the event of a method node, we look for an open paren and accept the function call.
- if (node != nullptr && node->getAsMethodNode() != nullptr && peekTokenClass(EHTokLeftParen)) {
- if (! acceptFunctionCall(field, node, base)) {
+ // arguments
+ if (! acceptFunctionCall(field, node, thisNode)) {
expected("function parameters");
return false;
}
- }
+ } else
+ node = parseContext.handleDotDereference(field.loc, node, *field.string);
break;
}
@@ -3264,7 +3282,7 @@
TSourceLoc loc = token.loc;
TIntermTyped* sizeExpr = nullptr;
- // Array sizing expression is optional. If ommitted, array will be later sized by initializer list.
+ // Array sizing expression is optional. If omitted, array will be later sized by initializer list.
const bool hasArraySize = acceptAssignmentExpression(sizeExpr);
if (! acceptTokenClass(EHTokRightBracket)) {
@@ -3289,11 +3307,18 @@
// COLON LAYOUT layout_qualifier_list
// annotations // optional
//
-void HlslGrammar::acceptPostDecls(TQualifier& qualifier)
+// Return true if any tokens were accepted. That is,
+// false can be returned on successfully recognizing nothing,
+// not necessarily meaning bad syntax.
+//
+bool HlslGrammar::acceptPostDecls(TQualifier& qualifier)
{
+ bool found = false;
+
do {
// COLON
if (acceptTokenClass(EHTokColon)) {
+ found = true;
HlslToken idToken;
if (peekTokenClass(EHTokLayout))
acceptLayoutQualifierList(qualifier);
@@ -3301,18 +3326,18 @@
// PACKOFFSET LEFT_PAREN c[Subcomponent][.component] RIGHT_PAREN
if (! acceptTokenClass(EHTokLeftParen)) {
expected("(");
- return;
+ return false;
}
HlslToken locationToken;
if (! acceptIdentifier(locationToken)) {
expected("c[subcomponent][.component]");
- return;
+ return false;
}
HlslToken componentToken;
if (acceptTokenClass(EHTokDot)) {
if (! acceptIdentifier(componentToken)) {
expected("component");
- return;
+ return false;
}
}
if (! acceptTokenClass(EHTokRightParen)) {
@@ -3322,19 +3347,19 @@
parseContext.handlePackOffset(locationToken.loc, qualifier, *locationToken.string, componentToken.string);
} else if (! acceptIdentifier(idToken)) {
expected("layout, semantic, packoffset, or register");
- return;
+ return false;
} else if (*idToken.string == "register") {
// REGISTER LEFT_PAREN [shader_profile,] Type#[subcomp]opt (COMMA SPACEN)opt RIGHT_PAREN
// LEFT_PAREN
if (! acceptTokenClass(EHTokLeftParen)) {
expected("(");
- return;
+ return false;
}
HlslToken registerDesc; // for Type#
HlslToken profile;
if (! acceptIdentifier(registerDesc)) {
expected("register number description");
- return;
+ return false;
}
if (registerDesc.string->size() > 1 && !isdigit((*registerDesc.string)[1]) &&
acceptTokenClass(EHTokComma)) {
@@ -3343,7 +3368,7 @@
profile = registerDesc;
if (! acceptIdentifier(registerDesc)) {
expected("register number description");
- return;
+ return false;
}
}
int subComponent = 0;
@@ -3351,7 +3376,7 @@
// LEFT_BRACKET subcomponent RIGHT_BRACKET
if (! peekTokenClass(EHTokIntConstant)) {
expected("literal integer");
- return;
+ return false;
}
subComponent = token.i;
advanceToken();
@@ -3365,7 +3390,7 @@
if (acceptTokenClass(EHTokComma)) {
if (! acceptIdentifier(spaceDesc)) {
expected ("space identifier");
- return;
+ return false;
}
}
// RIGHT_PAREN
@@ -3378,12 +3403,15 @@
// semantic, in idToken.string
parseContext.handleSemantic(idToken.loc, qualifier, *idToken.string);
}
- } else if (peekTokenClass(EHTokLeftAngle))
+ } else if (peekTokenClass(EHTokLeftAngle)) {
+ found = true;
acceptAnnotations(qualifier);
- else
+ } else
break;
} while (true);
+
+ return found;
}
} // end namespace glslang
diff --git a/hlsl/hlslGrammar.h b/hlsl/hlslGrammar.h
index c8753fd..8ff4e2e 100755
--- a/hlsl/hlslGrammar.h
+++ b/hlsl/hlslGrammar.h
@@ -65,7 +65,6 @@
bool acceptIdentifier(HlslToken&);
bool acceptCompilationUnit();
bool acceptDeclaration(TIntermNode*&);
- bool acceptDeclaration(TIntermNode*& node1, TIntermNode*& node2);
bool acceptControlDeclaration(TIntermNode*& node);
bool acceptSamplerDeclarationDX9(TType&);
bool acceptSamplerState();
@@ -88,7 +87,7 @@
bool acceptStructDeclarationList(TTypeList*&);
bool acceptFunctionParameters(TFunction&);
bool acceptParameterDeclaration(TFunction&);
- bool acceptFunctionDefinition(TFunction&, TIntermNode*& node1, TIntermNode*& node2, const TAttributeMap&);
+ bool acceptFunctionDefinition(TFunction&, TIntermNode*& nodeList, const TAttributeMap&);
bool acceptParenExpression(TIntermTyped*&);
bool acceptExpression(TIntermTyped*&);
bool acceptInitializer(TIntermTyped*&);
@@ -114,7 +113,7 @@
bool acceptCaseLabel(TIntermNode*&);
bool acceptDefaultLabel(TIntermNode*&);
void acceptArraySpecifier(TArraySizes*&);
- void acceptPostDecls(TQualifier&);
+ bool acceptPostDecls(TQualifier&);
bool acceptDefaultParameterDeclaration(const TType&, TIntermTyped*&);
HlslParseContext& parseContext; // state of parsing and helper functions for building the intermediate
diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp
index dcf4d96..e0dcc09 100755
--- a/hlsl/hlslParseHelper.cpp
+++ b/hlsl/hlslParseHelper.cpp
@@ -691,6 +691,22 @@
}
}
+ // Handle operator[] on structured buffers: this indexes into the array element of the buffer.
+ // indexStructBufferContent returns nullptr if it isn't a structuredbuffer (SSBO).
+ TIntermTyped* sbArray = indexStructBufferContent(loc, base);
+ if (sbArray != nullptr) {
+ if (sbArray == nullptr)
+ return nullptr;
+
+ // Now we'll apply the [] index to that array
+ const TOperator idxOp = (index->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect;
+
+ TIntermTyped* element = intermediate.addIndex(idxOp, sbArray, index, loc);
+ const TType derefType(sbArray->getType(), 0);
+ element->setType(derefType);
+ return element;
+ }
+
return nullptr;
}
@@ -846,49 +862,18 @@
}
//
-// Handle seeing a base.field dereference in the grammar.
+// Handle seeing a base.field dereference in the grammar, where 'field' is a
+// swizzle or member variable.
//
TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TIntermTyped* base, const TString& field)
{
variableCheck(base);
- //
- // methods can't be resolved until we later see the function-calling syntax.
- // Save away the name in the AST for now. Processing is completed in
- // handleLengthMethod(), etc.
- //
- if (field == "length") {
- return intermediate.addMethod(base, TType(EbtInt), &field, loc);
- } else if (isSamplerMethod(field) && base->getType().getBasicType() == EbtSampler) {
- // If it's not a method on a sampler object, we fall through to let other objects have a go.
- const TSampler& sampler = base->getType().getSampler();
- if (! sampler.isPureSampler()) {
- const int vecSize = sampler.isShadow() ? 1 : 4; // TODO: handle arbitrary sample return sizes
- return intermediate.addMethod(base, TType(sampler.type, EvqTemporary, vecSize), &field, loc);
- }
- } else if (isStructBufferMethod(field) &&
- base->getType().isRuntimeSizedArray() &&
- (base->getQualifier().storage == EvqUniform || base->getQualifier().storage == EvqBuffer)) {
- TType retType(base->getType(), 0);
- return intermediate.addMethod(base, retType, &field, loc);
- } else if (field == "Append" ||
- field == "RestartStrip") {
- // We cannot check the type here: it may be sanitized if we're not compiling a geometry shader, but
- // the code is around in the shader source.
- return intermediate.addMethod(base, TType(EbtVoid), &field, loc);
- }
-
- // It's not .length() if we get to here.
-
if (base->isArray()) {
error(loc, "cannot apply to an array:", ".", field.c_str());
-
return base;
}
- // It's neither an array nor .length() if we get here,
- // leaving swizzles and struct/block dereferences.
-
TIntermTyped* result = base;
if (base->isVector() || base->isScalar()) {
TSwizzleSelectors<TVectorSelector> selectors;
@@ -997,6 +982,40 @@
return result;
}
+//
+// Handle seeing a base.field dereference in the grammar, where 'field' is a
+// built-in method name.
+//
+// Return nullptr if 'field' is not a built-in method.
+//
+TIntermTyped* HlslParseContext::handleBuiltInMethod(const TSourceLoc& loc, TIntermTyped* base, const TString& field)
+{
+ variableCheck(base);
+
+ //
+ // Methods can't be resolved until we finish seeing the function-calling syntax.
+ // Save away the name in the AST for now.
+ //
+ if (isSamplerMethod(field) && base->getType().getBasicType() == EbtSampler) {
+ // If it's not a method on a sampler object, we fall through to let other objects have a go.
+ const TSampler& sampler = base->getType().getSampler();
+ if (! sampler.isPureSampler()) {
+ const int vecSize = sampler.isShadow() ? 1 : 4; // TODO: handle arbitrary sample return sizes
+ return intermediate.addMethod(base, TType(sampler.type, EvqTemporary, vecSize), &field, loc);
+ }
+ } else if (isStructBufferType(base->getType())) {
+ TType retType(base->getType(), 0);
+ return intermediate.addMethod(base, retType, &field, loc);
+ } else if (field == "Append" ||
+ field == "RestartStrip") {
+ // We cannot check the type here: it may be sanitized if we're not compiling a geometry shader, but
+ // the code is around in the shader source.
+ return intermediate.addMethod(base, TType(EbtVoid), &field, loc);
+ }
+
+ return nullptr;
+}
+
// Split the type of the given node into two structs:
// 1. interstage IO
// 2. everything else
@@ -1507,6 +1526,8 @@
// Handle seeing the function prototype in front of a function definition in the grammar.
// The body is handled after this function returns.
//
+// Returns an aggregate of parameter-symbol nodes.
+//
TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& loc, TFunction& function,
const TAttributeMap& attributes, TIntermNode*& entryPointTree)
{
@@ -1919,9 +1940,11 @@
if (function.getType().getBasicType() != EbtVoid)
clearUniformInputOutput(function.getWritableType().getQualifier());
- // parameters
+ // parameters.
+ // References to structuredbuffer types are left unmodified
for (int i = 0; i < function.getParamCount(); i++)
- clearUniformInputOutput(function[i].type->getQualifier());
+ if (!isReference(*function[i].type))
+ clearUniformInputOutput(function[i].type->getQualifier());
}
// Handle function returns, including type conversions to the function return type
@@ -2284,13 +2307,17 @@
const TOperator op = node->getAsOperator()->getOp();
TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr;
-
- TIntermTyped* argArray = argAggregate ? argAggregate->getSequence()[0]->getAsTyped() : nullptr; // array
-
- // Bail out if not a block method
- if (argArray == nullptr || !argArray->getType().isRuntimeSizedArray())
+ if (argAggregate == nullptr)
return;
+ // Buffer is the object upon which method is called, so always arg 0
+ TIntermTyped* bufferObj = argAggregate->getSequence()[0]->getAsTyped();
+
+ // Index to obtain the runtime sized array out of the buffer.
+ TIntermTyped* argArray = indexStructBufferContent(loc, bufferObj);
+ if (argArray == nullptr)
+ return; // It might not be a struct buffer method.
+
switch (op) {
case EOpMethodLoad:
{
@@ -2432,7 +2459,7 @@
case EOpMethodGetDimensions:
{
- const int numArgs = argAggregate->getSequence().size();
+ const int numArgs = (int)argAggregate->getSequence().size();
TIntermTyped* argNumItems = argAggregate->getSequence()[1]->getAsTyped(); // out num items
TIntermTyped* argStride = numArgs > 2 ? argAggregate->getSequence()[2]->getAsTyped() : nullptr; // out stride
@@ -2681,6 +2708,7 @@
const TSampler& sampler = texType.getSampler();
const TSamplerDim dim = sampler.dim;
const bool isImage = sampler.isImage();
+ const bool isMs = sampler.isMultiSample();
const int numArgs = (int)argAggregate->getSequence().size();
int numDims = 0;
@@ -2691,6 +2719,7 @@
case Esd3D: numDims = 3; break; // W, H, D
case EsdCube: numDims = 2; break; // W, H (cube)
case EsdBuffer: numDims = 1; break; // W (buffers)
+ case EsdRect: numDims = 2; break; // W, H (rect)
default:
assert(0 && "unhandled texture dimension");
}
@@ -2699,17 +2728,31 @@
if (sampler.isArrayed())
++numDims;
- // Establish whether we're querying mip levels
- const bool mipQuery = (numArgs > (numDims + 1)) && (!sampler.isMultiSample());
+ // Establish whether the method itself is querying mip levels. This can be false even
+ // if the underlying query requires a MIP level, due to the available HLSL method overloads.
+ const bool mipQuery = (numArgs > (numDims + 1 + (isMs ? 1 : 0)));
+
+ // Establish whether we must use the LOD form of query (even if the method did not supply a mip level to query).
+ // True if:
+ // 1. 1D/2D/3D/Cube AND multisample==0 AND NOT image (those can be sent to the non-LOD query)
+ // or,
+ // 2. There is a LOD (because the non-LOD query cannot be used in that case, per spec)
+ const bool mipRequired =
+ ((dim == Esd1D || dim == Esd2D || dim == Esd3D || dim == EsdCube) && !isMs && !isImage) || // 1...
+ mipQuery; // 2...
// AST assumes integer return. Will be converted to float if required.
TIntermAggregate* sizeQuery = new TIntermAggregate(isImage ? EOpImageQuerySize : EOpTextureQuerySize);
sizeQuery->getSequence().push_back(argTex);
- // If we're querying an explicit LOD, add the LOD, which is always arg #1
- if (mipQuery) {
- TIntermTyped* queryLod = argAggregate->getSequence()[1]->getAsTyped();
+
+ // If we're building an LOD query, add the LOD.
+ if (mipRequired) {
+ // If the base HLSL query had no MIP level given, use level 0.
+ TIntermTyped* queryLod = mipQuery ? argAggregate->getSequence()[1]->getAsTyped() :
+ intermediate.addConstantUnion(0, loc, true);
sizeQuery->getSequence().push_back(queryLod);
}
+
sizeQuery->setType(TType(EbtUint, EvqTemporary, numDims));
sizeQuery->setLoc(loc);
@@ -3567,7 +3610,7 @@
{
// input uvecN with low 16 bits of each component holding a float16. convert to float32.
TIntermTyped* argValue = node->getAsUnaryNode()->getOperand();
- TIntermTyped* zero = intermediate.addConstantUnion(0.0, EbtFloat, loc, true);
+ TIntermTyped* zero = intermediate.addConstantUnion(0, loc, true);
const int vecSize = argValue->getType().getVectorSize();
TOperator constructOp = EOpNull;
@@ -3712,9 +3755,7 @@
TIntermTyped* result = nullptr;
TOperator op = function->getBuiltInOp();
- if (op == EOpArrayLength)
- result = handleLengthMethod(loc, function, arguments);
- else if (op != EOpNull) {
+ if (op != EOpNull) {
//
// Then this should be a constructor.
// Don't go through the symbol table for constructors.
@@ -3734,13 +3775,13 @@
// Find it in the symbol table.
//
const TFunction* fnCandidate = nullptr;
- bool builtIn;
+ bool builtIn = false;
// TODO: this needs improvement: there's no way at present to look up a signature in
// the symbol table for an arbitrary type. This is a temporary hack until that ability exists.
// It will have false positives, since it doesn't check arg counts or types.
if (arguments && arguments->getAsAggregate()) {
- if (arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType().isRuntimeSizedArray()) {
+ if (isStructBufferType(arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType())) {
if (isStructBufferMethod(function->getName())) {
const TString mangle = function->getName() + "(";
TSymbol* symbol = symbolTable.find(mangle, &builtIn);
@@ -3828,41 +3869,6 @@
return result;
}
-// Finish processing object.length(). This started earlier in handleDotDereference(), where
-// the ".length" part was recognized and semantically checked, and finished here where the
-// function syntax "()" is recognized.
-//
-// Return resulting tree node.
-TIntermTyped* HlslParseContext::handleLengthMethod(const TSourceLoc& loc, TFunction* function, TIntermNode* intermNode)
-{
- int length = 0;
-
- if (function->getParamCount() > 0)
- error(loc, "method does not accept any arguments", function->getName().c_str(), "");
- else {
- const TType& type = intermNode->getAsTyped()->getType();
- if (type.isArray()) {
- if (type.isRuntimeSizedArray()) {
- // Create a unary op and let the back end handle it
- return intermediate.addBuiltInFunctionCall(loc, EOpArrayLength, true, intermNode, TType(EbtInt));
- } else
- length = type.getOuterArraySize();
- } else if (type.isMatrix())
- length = type.getMatrixCols();
- else if (type.isVector())
- length = type.getVectorSize();
- else {
- // we should not get here, because earlier semantic checking should have prevented this path
- error(loc, ".length()", "unexpected use of .length()", "");
- }
- }
-
- if (length == 0)
- length = 1;
-
- return intermediate.addConstantUnion(length, loc);
-}
-
//
// Add any needed implicit conversions for function-call arguments to input parameters.
//
@@ -5130,6 +5136,95 @@
trackLinkage(*block);
}
+//
+// Generate index to the array element in a structure buffer (SSBO)
+//
+TIntermTyped* HlslParseContext::indexStructBufferContent(const TSourceLoc& loc, TIntermTyped* buffer) const
+{
+ // Bail out if not a struct buffer
+ if (buffer == nullptr || ! isStructBufferType(buffer->getType()))
+ return nullptr;
+
+ // Runtime sized array is always the last element.
+ const TTypeList* bufferStruct = buffer->getType().getStruct();
+ TIntermTyped* arrayPosition = intermediate.addConstantUnion(unsigned(bufferStruct->size()-1), loc);
+
+ TIntermTyped* argArray = intermediate.addIndex(EOpIndexDirectStruct, buffer, arrayPosition, loc);
+ argArray->setType(*(*bufferStruct)[bufferStruct->size()-1].type);
+
+ return argArray;
+}
+
+//
+// IFF type is a structuredbuffer/byteaddressbuffer type, return the content
+// (template) type. E.g, StructuredBuffer<MyType> -> MyType. Else return nullptr.
+//
+TType* HlslParseContext::getStructBufferContentType(const TType& type) const
+{
+ if (type.getBasicType() != EbtBlock)
+ return nullptr;
+
+ const int memberCount = (int)type.getStruct()->size();
+ assert(memberCount > 0);
+
+ TType* contentType = (*type.getStruct())[memberCount-1].type;
+
+ return contentType->isRuntimeSizedArray() ? contentType : nullptr;
+}
+
+//
+// If an existing struct buffer has a sharable type, then share it.
+//
+void HlslParseContext::shareStructBufferType(TType& type)
+{
+ // PackOffset must be equivalent to share types on a per-member basis.
+ // Note: cannot use auto type due to recursion. Thus, this is a std::function.
+ const std::function<bool(TType& lhs, TType& rhs)>
+ compareQualifiers = [&](TType& lhs, TType& rhs) -> bool {
+ if (lhs.getQualifier().layoutOffset != rhs.getQualifier().layoutOffset)
+ return false;
+
+ if (lhs.isStruct() != rhs.isStruct())
+ return false;
+
+ if (lhs.isStruct() && rhs.isStruct()) {
+ if (lhs.getStruct()->size() != rhs.getStruct()->size())
+ return false;
+
+ for (int i = 0; i < int(lhs.getStruct()->size()); ++i)
+ if (!compareQualifiers(*(*lhs.getStruct())[i].type, *(*rhs.getStruct())[i].type))
+ return false;
+ }
+
+ return true;
+ };
+
+ // We need to compare certain qualifiers in addition to the type.
+ const auto typeEqual = [compareQualifiers](TType& lhs, TType& rhs) -> bool {
+ if (lhs.getQualifier().readonly != rhs.getQualifier().readonly)
+ return false;
+
+ // If both are structures, recursively look for packOffset equality
+ // as well as type equality.
+ return compareQualifiers(lhs, rhs) && lhs == rhs;
+ };
+
+ // This is an exhaustive O(N) search, but real world shaders have
+ // only a small number of these.
+ for (int idx = 0; idx < int(structBufferTypes.size()); ++idx) {
+ // If the deep structure matches, modulo qualifiers, use it
+ if (typeEqual(*structBufferTypes[idx], type)) {
+ type.shallowCopy(*structBufferTypes[idx]);
+ return;
+ }
+ }
+
+ // Otherwise, remember it:
+ TType* typeCopy = new TType;
+ typeCopy->shallowCopy(type);
+ structBufferTypes.push_back(typeCopy);
+}
+
void HlslParseContext::paramFix(TType& type)
{
switch (type.getQualifier().storage) {
@@ -5140,6 +5235,18 @@
case EvqTemporary:
type.getQualifier().storage = EvqIn;
break;
+ case EvqBuffer:
+ {
+ // SSBO parameter. These do not go through the declareBlock path since they are fn parameters.
+ correctUniform(type.getQualifier());
+ TQualifier bufferQualifier = globalBufferDefaults;
+ mergeObjectLayoutQualifiers(bufferQualifier, type.getQualifier(), true);
+ bufferQualifier.storage = type.getQualifier().storage;
+ bufferQualifier.readonly = type.getQualifier().readonly;
+ bufferQualifier.coherent = type.getQualifier().coherent;
+ type.getQualifier() = bufferQualifier;
+ break;
+ }
default:
break;
}
@@ -5971,6 +6078,19 @@
ioTypeMap[type.getStruct()] = newLists;
}
+// Lookup a user-type by name.
+// If found, fill in the type and return the defining symbol.
+// If not found, return nullptr.
+TSymbol* HlslParseContext::lookupUserType(const TString& typeName, TType& type)
+{
+ TSymbol* symbol = symbolTable.find(typeName);
+ if (symbol && symbol->getAsVariable() && symbol->getAsVariable()->isUserType()) {
+ type.shallowCopy(symbol->getType());
+ return symbol;
+ } else
+ return nullptr;
+}
+
//
// Do everything necessary to handle a variable (non-block) declaration.
// Either redeclaring a variable, or making a new one, updating the symbol
@@ -6011,6 +6131,7 @@
if (it != ioTypeMap.end())
type.setStruct(it->second.uniform);
}
+
break;
default:
break;
@@ -6648,8 +6769,6 @@
error(memberLoc, "member cannot contradict block (or what block inherited from global)", "xfb_buffer", "");
}
- if (memberQualifier.hasPacking())
- error(memberLoc, "member of block cannot have a packing layout qualifier", typeList[member].type->getFieldName().c_str(), "");
if (memberQualifier.hasLocation()) {
switch (type.getQualifier().storage) {
case EvqVaryingIn:
@@ -6661,10 +6780,6 @@
}
} else
memberWithoutLocation = true;
- if (memberQualifier.hasAlign()) {
- if (defaultQualification.layoutPacking != ElpStd140 && defaultQualification.layoutPacking != ElpStd430)
- error(memberLoc, "can only be used with std140 or std430 layout packing", "align", "");
- }
TQualifier newMemberQualification = defaultQualification;
mergeQualifiers(newMemberQualification, memberQualifier);
diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h
index de1bc95..ecfdaa7 100755
--- a/hlsl/hlslParseHelper.h
+++ b/hlsl/hlslParseHelper.h
@@ -70,6 +70,7 @@
TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right);
TIntermTyped* handleUnaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* childNode);
TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field);
+ TIntermTyped* handleBuiltInMethod(const TSourceLoc&, TIntermTyped* base, const TString& field);
void assignLocations(TVariable& variable);
TFunction& handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype);
TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&, const TAttributeMap&, TIntermNode*& entryPointTree);
@@ -86,7 +87,6 @@
void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
void decomposeStructBufferMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
void decomposeGeometryMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
- TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*);
void addInputArgumentConversions(const TFunction&, TIntermTyped*&);
TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermOperator&);
void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&);
@@ -133,6 +133,7 @@
const TFunction* findFunction(const TSourceLoc& loc, TFunction& call, bool& builtIn, TIntermTyped*& args);
void declareTypedef(const TSourceLoc&, TString& identifier, const TType&);
void declareStruct(const TSourceLoc&, TString& structName, TType&);
+ TSymbol* lookupUserType(const TString&, TType&);
TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, TType&, TIntermTyped* initializer = 0);
void lengthenList(const TSourceLoc&, TIntermSequence& list, int size);
TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&);
@@ -180,6 +181,9 @@
void initFlattening() { flattenLevel.push_back(0); flattenOffset.push_back(0); }
void finalizeFlattening() { flattenLevel.pop_back(); flattenOffset.pop_back(); }
+ // Share struct buffer deep types
+ void shareStructBufferType(TType&);
+
protected:
struct TFlattenData {
TFlattenData() : nextBinding(TQualifier::layoutBindingEnd) { }
@@ -248,6 +252,14 @@
bool isSamplerMethod(const TString& name) const;
bool isStructBufferMethod(const TString& name) const;
+ TType* getStructBufferContentType(const TType& type) const;
+ bool isStructBufferType(const TType& type) const { return getStructBufferContentType(type) != nullptr; }
+ TIntermTyped* indexStructBufferContent(const TSourceLoc& loc, TIntermTyped* buffer) const;
+
+ // Return true if this type is a reference. This is not currently a type method in case that's
+ // a language specific answer.
+ bool isReference(const TType& type) const { return isStructBufferType(type); }
+
// Pass through to base class after remembering builtin mappings.
using TParseContextBase::trackLinkage;
void trackLinkage(TSymbol& variable) override;
@@ -330,6 +342,9 @@
// Structure splitting data:
TMap<int, TVariable*> splitIoVars; // variables with the builtin interstage IO removed, indexed by unique ID.
+ // Structuredbuffer shared types. Typically there are only a few.
+ TVector<TType*> structBufferTypes;
+
// The builtin interstage IO map considers e.g, EvqPosition on input and output separately, so that we
// can build the linkage correctly if position appears on both sides. Otherwise, multiple positions
// are considered identical.
diff --git a/hlsl/hlslScanContext.cpp b/hlsl/hlslScanContext.cpp
index 907ccd1..a80ee93 100755
--- a/hlsl/hlslScanContext.cpp
+++ b/hlsl/hlslScanContext.cpp
@@ -327,6 +327,7 @@
(*KeywordMap)["RWStructuredBuffer"] = EHTokRWStructuredBuffer;
(*KeywordMap)["StructuredBuffer"] = EHTokStructuredBuffer;
+ (*KeywordMap)["class"] = EHTokClass;
(*KeywordMap)["struct"] = EHTokStruct;
(*KeywordMap)["cbuffer"] = EHTokCBuffer;
(*KeywordMap)["tbuffer"] = EHTokTBuffer;
@@ -354,7 +355,6 @@
ReservedSet->insert("auto");
ReservedSet->insert("catch");
ReservedSet->insert("char");
- ReservedSet->insert("class");
ReservedSet->insert("const_cast");
ReservedSet->insert("enum");
ReservedSet->insert("explicit");
@@ -740,6 +740,7 @@
return keyword;
// variable, user type, ...
+ case EHTokClass:
case EHTokStruct:
case EHTokTypedef:
case EHTokCBuffer:
diff --git a/hlsl/hlslTokens.h b/hlsl/hlslTokens.h
index 824aa8c..1c8f528 100755
--- a/hlsl/hlslTokens.h
+++ b/hlsl/hlslTokens.h
@@ -268,6 +268,7 @@
// variable, user type, ...
EHTokIdentifier,
EHTokTypeName,
+ EHTokClass,
EHTokStruct,
EHTokCBuffer,
EHTokTBuffer,