Don't remove SPIR-V blocks before codegen.
authorDejan Mircevski <deki@google.com>
Wed, 20 Jan 2016 02:13:38 +0000 (21:13 -0500)
committerDejan Mircevski <deki@google.com>
Wed, 20 Jan 2016 02:18:14 +0000 (21:18 -0500)
A removed block releases its instructions, so Module::idToInstruction
suddenly contains dangling references.  The original motivation for
block removal was to skip some unreachable blocks, but that's already
achieved by InReadableOrder.cpp.

Also updated stale comments.

17 files changed:
SPIRV/GlslangToSpv.cpp
SPIRV/SpvBuilder.cpp
SPIRV/spvIR.h
Test/baseResults/spv.100ops.frag.out
Test/baseResults/spv.140.frag.out
Test/baseResults/spv.AofA.frag.out
Test/baseResults/spv.atomic.comp.out
Test/baseResults/spv.bool.vert.out
Test/baseResults/spv.for-notest.vert.out
Test/baseResults/spv.forwardFun.frag.out
Test/baseResults/spv.functionCall.frag.out
Test/baseResults/spv.functionSemantics.frag.out
Test/baseResults/spv.matFun.vert.out
Test/baseResults/spv.precision.frag.out
Test/baseResults/spv.shortCircuit.frag.out
Test/baseResults/spv.simpleFunctionCall.frag.out
Test/baseResults/spv.switch.frag.out

index 9bee407..71127c7 100755 (executable)
@@ -1412,9 +1412,11 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
         builder.createBranch(&blocks.head);
     } else {
         // Spec requires back edges to target header blocks, and every header
-        // block must dominate its merge block.  Create an empty header block
-        // here to ensure these conditions are met even when body contains
-        // non-trivial control flow.
+        // block must dominate its merge block.  Make a header block first to
+        // ensure these conditions are met.  By definition, it will contain
+        // OpLoopMerge, followed by a block-ending branch.  But we don't want to
+        // put any other body instructions in it, since the body may have
+        // arbitrary instructions, including merges of its own.
         builder.setBuildPoint(&blocks.head);
         builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone);
         builder.createBranch(&blocks.body);
@@ -1435,12 +1437,9 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
                 builder.accessChainLoad(convertGlslangToSpvType(node->getTest()->getType()));
             builder.createConditionalBranch(condition, &blocks.head, &blocks.merge);
         } else {
-            // TODO: unless there was a break instruction somewhere in the body,
-            // this is an infinite loop, so we should abort code generation with
-            // a warning.  As it stands now, nothing will jump to the merge
-            // block, and it may be dropped as unreachable by the SPIR-V dumper.
-            // That, in turn, will result in a non-existing %ID in the LoopMerge
-            // above.
+            // TODO: unless there was a break/return/discard instruction
+            // somewhere in the body, this is an infinite loop, so we should
+            // issue a warning.
             builder.createBranch(&blocks.head);
         }
     }
index af6de66..82e5f2c 100755 (executable)
@@ -855,24 +855,10 @@ void Builder::leaveFunction()
 
     // If our function did not contain a return, add a return void now.
     if (! block->isTerminated()) {
-
-        // Whether we're in an unreachable (non-entry) block.
-        bool unreachable = function.getEntryBlock() != block && block->getPredecessors().empty();
-
-        if (unreachable) {
-            // Given that this block is at the end of a function, it must be right after an
-            // explicit return, just remove it.
-            function.removeBlock(block);
-        } else {
-            // We'll add a return instruction at the end of the current block,
-            // which for a non-void function is really error recovery (?), as the source
-            // being translated should have had an explicit return, which would have been
-            // followed by an unreachable block, which was handled above.
-            if (function.getReturnType() == makeVoidType())
-                makeReturn(true);
-            else {
-                makeReturn(true, createUndefined(function.getReturnType()));
-            }
+        if (function.getReturnType() == makeVoidType())
+            makeReturn(true);
+        else {
+            makeReturn(true, createUndefined(function.getReturnType()));
         }
     }
 }
index 9c8db1f..1501e6b 100755 (executable)
@@ -205,12 +205,6 @@ public:
 
     void dump(std::vector<unsigned int>& out) const
     {
-        // skip the degenerate unreachable blocks
-        // TODO: code gen: skip all unreachable blocks (transitive closure)
-        //                 (but, until that's done safer to keep non-degenerate unreachable blocks, in case others depend on something)
-        if (unreachable && instructions.size() <= 2)
-            return;
-
         instructions[0]->dump(out);
         for (int i = 0; i < (int)localVariables.size(); ++i)
             localVariables[i]->dump(out);
index fa21783..11391f6 100755 (executable)
@@ -5,7 +5,7 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 47
+// Id's are bound by 48
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
index e54dda6..01b2e47 100755 (executable)
@@ -5,7 +5,7 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 100
+// Id's are bound by 101
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -23,40 +23,40 @@ Linked fragment stage:
                               Name 43  "k"
                               Name 55  "sampR"
                               Name 63  "sampB"
-                              Name 86  "samp2Da"
-                              Name 91  "bn"
-                              MemberName 91(bn) 0  "matra"
-                              MemberName 91(bn) 1  "matca"
-                              MemberName 91(bn) 2  "matr"
-                              MemberName 91(bn) 3  "matc"
-                              MemberName 91(bn) 4  "matrdef"
-                              Name 93  ""
-                              Name 96  "bi"
-                              MemberName 96(bi) 0  "v"
-                              Name 99  "bname"
+                              Name 87  "samp2Da"
+                              Name 92  "bn"
+                              MemberName 92(bn) 0  "matra"
+                              MemberName 92(bn) 1  "matca"
+                              MemberName 92(bn) 2  "matr"
+                              MemberName 92(bn) 3  "matc"
+                              MemberName 92(bn) 4  "matrdef"
+                              Name 94  ""
+                              Name 97  "bi"
+                              MemberName 97(bi) 0  "v"
+                              Name 100  "bname"
                               Decorate 16(gl_FrontFacing) BuiltIn FrontFacing
                               Decorate 33(gl_ClipDistance) BuiltIn ClipDistance
-                              Decorate 89 ArrayStride 64
                               Decorate 90 ArrayStride 64
-                              MemberDecorate 91(bn) 0 RowMajor
-                              MemberDecorate 91(bn) 0 Offset 0
-                              MemberDecorate 91(bn) 0 MatrixStride 16
-                              MemberDecorate 91(bn) 1 ColMajor
-                              MemberDecorate 91(bn) 1 Offset 256
-                              MemberDecorate 91(bn) 1 MatrixStride 16
-                              MemberDecorate 91(bn) 2 RowMajor
-                              MemberDecorate 91(bn) 2 Offset 512
-                              MemberDecorate 91(bn) 2 MatrixStride 16
-                              MemberDecorate 91(bn) 3 ColMajor
-                              MemberDecorate 91(bn) 3 Offset 576
-                              MemberDecorate 91(bn) 3 MatrixStride 16
-                              MemberDecorate 91(bn) 4 RowMajor
-                              MemberDecorate 91(bn) 4 Offset 640
-                              MemberDecorate 91(bn) 4 MatrixStride 16
-                              Decorate 91(bn) Block
-                              Decorate 95 ArrayStride 16
-                              MemberDecorate 96(bi) 0 Offset 0
-                              Decorate 96(bi) Block
+                              Decorate 91 ArrayStride 64
+                              MemberDecorate 92(bn) 0 RowMajor
+                              MemberDecorate 92(bn) 0 Offset 0
+                              MemberDecorate 92(bn) 0 MatrixStride 16
+                              MemberDecorate 92(bn) 1 ColMajor
+                              MemberDecorate 92(bn) 1 Offset 256
+                              MemberDecorate 92(bn) 1 MatrixStride 16
+                              MemberDecorate 92(bn) 2 RowMajor
+                              MemberDecorate 92(bn) 2 Offset 512
+                              MemberDecorate 92(bn) 2 MatrixStride 16
+                              MemberDecorate 92(bn) 3 ColMajor
+                              MemberDecorate 92(bn) 3 Offset 576
+                              MemberDecorate 92(bn) 3 MatrixStride 16
+                              MemberDecorate 92(bn) 4 RowMajor
+                              MemberDecorate 92(bn) 4 Offset 640
+                              MemberDecorate 92(bn) 4 MatrixStride 16
+                              Decorate 92(bn) Block
+                              Decorate 96 ArrayStride 16
+                              MemberDecorate 97(bi) 0 Offset 0
+                              Decorate 97(bi) Block
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -100,24 +100,24 @@ Linked fragment stage:
               69:             TypeVector 6(float) 2
               72:    6(float) Constant 1120403456
               74:     29(int) Constant 3
-              82:             TypeImage 6(float) 2D sampled format:Unknown
-              83:             TypeSampledImage 82
-              84:             TypeArray 83 74
-              85:             TypePointer UniformConstant 84
-     86(samp2Da):     85(ptr) Variable UniformConstant
-              87:             TypeMatrix 26(fvec4) 4
-              88:     29(int) Constant 4
-              89:             TypeArray 87 88
-              90:             TypeArray 87 88
-          91(bn):             TypeStruct 89 90 87 87 87
-              92:             TypePointer Uniform 91(bn)
-              93:     92(ptr) Variable Uniform
-              94:             TypeVector 6(float) 3
-              95:             TypeArray 94(fvec3) 50
-          96(bi):             TypeStruct 95
-              97:             TypeArray 96(bi) 88
-              98:             TypePointer Uniform 97
-       99(bname):     98(ptr) Variable Uniform
+              83:             TypeImage 6(float) 2D sampled format:Unknown
+              84:             TypeSampledImage 83
+              85:             TypeArray 84 74
+              86:             TypePointer UniformConstant 85
+     87(samp2Da):     86(ptr) Variable UniformConstant
+              88:             TypeMatrix 26(fvec4) 4
+              89:     29(int) Constant 4
+              90:             TypeArray 88 89
+              91:             TypeArray 88 89
+          92(bn):             TypeStruct 90 91 88 88 88
+              93:             TypePointer Uniform 92(bn)
+              94:     93(ptr) Variable Uniform
+              95:             TypeVector 6(float) 3
+              96:             TypeArray 95(fvec3) 50
+          97(bi):             TypeStruct 96
+              98:             TypeArray 97(bi) 89
+              99:             TypePointer Uniform 98
+      100(bname):     99(ptr) Variable Uniform
          4(main):           2 Function None 3
                5:             Label
               13:     12(ptr) Variable Function
index 822ad3d..1e41c3b 100644 (file)
@@ -7,34 +7,34 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 103
+// Id's are bound by 104
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 38 43 77
+                              EntryPoint Fragment 4  "main" 39 44 78
                               ExecutionMode 4 OriginLowerLeft
                               Source GLSL 430
                               Name 4  "main"
                               Name 17  "foo(f1[5][7];"
                               Name 16  "a"
                               Name 20  "r"
-                              Name 38  "outfloat"
-                              Name 41  "g4"
-                              Name 43  "g5"
-                              Name 44  "param"
-                              Name 47  "u"
-                              Name 51  "param"
-                              Name 65  "many"
-                              Name 67  "i"
-                              Name 69  "j"
-                              Name 71  "k"
-                              Name 77  "infloat"
-                              Name 93  "uAofA"
-                              MemberName 93(uAofA) 0  "f"
-                              Name 97  "nameAofA"
-                              Decorate 93(uAofA) GLSLShared
-                              Decorate 93(uAofA) Block
+                              Name 39  "outfloat"
+                              Name 42  "g4"
+                              Name 44  "g5"
+                              Name 45  "param"
+                              Name 48  "u"
+                              Name 52  "param"
+                              Name 66  "many"
+                              Name 68  "i"
+                              Name 70  "j"
+                              Name 72  "k"
+                              Name 78  "infloat"
+                              Name 94  "uAofA"
+                              MemberName 94(uAofA) 0  "f"
+                              Name 98  "nameAofA"
+                              Decorate 94(uAofA) GLSLShared
+                              Decorate 94(uAofA) Block
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -53,82 +53,82 @@ Linked fragment stage:
               25:     21(int) Constant 0
               28:     21(int) Constant 1
               32:     21(int) Constant 3
-              37:             TypePointer Output 6(float)
-    38(outfloat):     37(ptr) Variable Output
-              39:    6(float) Constant 0
-              40:             TypePointer Private 14
-          41(g4):     40(ptr) Variable Private
-              42:             TypePointer Input 11
-          43(g5):     42(ptr) Variable Input
-              48:    6(float) Constant 1077936128
-              49:             TypePointer Function 6(float)
-              54:      7(int) Constant 6
-              55:             TypeArray 6(float) 54
-              56:             TypeArray 55 10
-              57:             TypeArray 56 13
-              58:      7(int) Constant 3
-              59:             TypeArray 57 58
-              60:      7(int) Constant 2
-              61:             TypeArray 59 60
-              62:      7(int) Constant 1
-              63:             TypeArray 61 62
-              64:             TypePointer Private 63
-        65(many):     64(ptr) Variable Private
-              66:             TypePointer UniformConstant 21(int)
-           67(i):     66(ptr) Variable UniformConstant
-           69(j):     66(ptr) Variable UniformConstant
-           71(k):     66(ptr) Variable UniformConstant
-              76:             TypePointer Input 6(float)
-     77(infloat):     76(ptr) Variable Input
-              79:             TypePointer Private 6(float)
-              91:             TypeArray 6(float) 13
-              92:             TypeArray 91 60
-       93(uAofA):             TypeStruct 92
-              94:             TypeArray 93(uAofA) 10
-              95:             TypeArray 94 58
-              96:             TypePointer Uniform 95
-    97(nameAofA):     96(ptr) Variable Uniform
-              98:             TypePointer Uniform 6(float)
+              38:             TypePointer Output 6(float)
+    39(outfloat):     38(ptr) Variable Output
+              40:    6(float) Constant 0
+              41:             TypePointer Private 14
+          42(g4):     41(ptr) Variable Private
+              43:             TypePointer Input 11
+          44(g5):     43(ptr) Variable Input
+              49:    6(float) Constant 1077936128
+              50:             TypePointer Function 6(float)
+              55:      7(int) Constant 6
+              56:             TypeArray 6(float) 55
+              57:             TypeArray 56 10
+              58:             TypeArray 57 13
+              59:      7(int) Constant 3
+              60:             TypeArray 58 59
+              61:      7(int) Constant 2
+              62:             TypeArray 60 61
+              63:      7(int) Constant 1
+              64:             TypeArray 62 63
+              65:             TypePointer Private 64
+        66(many):     65(ptr) Variable Private
+              67:             TypePointer UniformConstant 21(int)
+           68(i):     67(ptr) Variable UniformConstant
+           70(j):     67(ptr) Variable UniformConstant
+           72(k):     67(ptr) Variable UniformConstant
+              77:             TypePointer Input 6(float)
+     78(infloat):     77(ptr) Variable Input
+              80:             TypePointer Private 6(float)
+              92:             TypeArray 6(float) 13
+              93:             TypeArray 92 61
+       94(uAofA):             TypeStruct 93
+              95:             TypeArray 94(uAofA) 10
+              96:             TypeArray 95 59
+              97:             TypePointer Uniform 96
+    98(nameAofA):     97(ptr) Variable Uniform
+              99:             TypePointer Uniform 6(float)
          4(main):           2 Function None 3
                5:             Label
-       44(param):     12(ptr) Variable Function
-           47(u):     12(ptr) Variable Function
-       51(param):     12(ptr) Variable Function
-                              Store 38(outfloat) 39
-              45:          11 Load 43(g5)
-                              Store 44(param) 45
-              46:          14 FunctionCall 17(foo(f1[5][7];) 44(param)
-                              Store 41(g4) 46
-              50:     49(ptr) AccessChain 47(u) 22 22
-                              Store 50 48
-              52:          11 Load 47(u)
-                              Store 51(param) 52
-              53:          14 FunctionCall 17(foo(f1[5][7];) 51(param)
-              68:     21(int) Load 67(i)
-              70:     21(int) Load 69(j)
-              72:     21(int) Load 71(k)
-              73:     21(int) Load 67(i)
-              74:     21(int) Load 69(j)
-              75:     21(int) Load 71(k)
-              78:    6(float) Load 77(infloat)
-              80:     79(ptr) AccessChain 65(many) 68 70 72 73 74 75
-                              Store 80 78
-              81:     21(int) Load 69(j)
-              82:     21(int) Load 69(j)
-              83:     21(int) Load 69(j)
-              84:     21(int) Load 69(j)
-              85:     21(int) Load 69(j)
-              86:     21(int) Load 69(j)
-              87:     79(ptr) AccessChain 65(many) 81 82 83 84 85 86
-              88:    6(float) Load 87
-              89:    6(float) Load 38(outfloat)
-              90:    6(float) FAdd 89 88
-                              Store 38(outfloat) 90
-              99:     98(ptr) AccessChain 97(nameAofA) 28 22 25 25 32
-             100:    6(float) Load 99
-             101:    6(float) Load 38(outfloat)
-             102:    6(float) FAdd 101 100
-                              Store 38(outfloat) 102
+       45(param):     12(ptr) Variable Function
+           48(u):     12(ptr) Variable Function
+       52(param):     12(ptr) Variable Function
+                              Store 39(outfloat) 40
+              46:          11 Load 44(g5)
+                              Store 45(param) 46
+              47:          14 FunctionCall 17(foo(f1[5][7];) 45(param)
+                              Store 42(g4) 47
+              51:     50(ptr) AccessChain 48(u) 22 22
+                              Store 51 49
+              53:          11 Load 48(u)
+                              Store 52(param) 53
+              54:          14 FunctionCall 17(foo(f1[5][7];) 52(param)
+              69:     21(int) Load 68(i)
+              71:     21(int) Load 70(j)
+              73:     21(int) Load 72(k)
+              74:     21(int) Load 68(i)
+              75:     21(int) Load 70(j)
+              76:     21(int) Load 72(k)
+              79:    6(float) Load 78(infloat)
+              81:     80(ptr) AccessChain 66(many) 69 71 73 74 75 76
+                              Store 81 79
+              82:     21(int) Load 70(j)
+              83:     21(int) Load 70(j)
+              84:     21(int) Load 70(j)
+              85:     21(int) Load 70(j)
+              86:     21(int) Load 70(j)
+              87:     21(int) Load 70(j)
+              88:     80(ptr) AccessChain 66(many) 82 83 84 85 86 87
+              89:    6(float) Load 88
+              90:    6(float) Load 39(outfloat)
+              91:    6(float) FAdd 90 89
+                              Store 39(outfloat) 91
+             100:     99(ptr) AccessChain 98(nameAofA) 28 22 25 25 32
+             101:    6(float) Load 100
+             102:    6(float) Load 39(outfloat)
+             103:    6(float) FAdd 102 101
+                              Store 39(outfloat) 103
                               Return
                               FunctionEnd
 17(foo(f1[5][7];):          14 Function None 15
index 2ee4978..bdf16fe 100755 (executable)
@@ -8,7 +8,7 @@ Linked compute stage:
 TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class?
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 74
+// Id's are bound by 75
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -20,28 +20,28 @@ TBD functionality: Is atomic_uint an opaque handle in the uniform storage class,
                               Name 10  "func(au1;"
                               Name 9  "c"
                               Name 12  "atoms("
-                              Name 20  "counter"
-                              Name 21  "param"
-                              Name 24  "val"
-                              Name 28  "countArr"
-                              Name 35  "origi"
-                              Name 37  "atomi"
-                              Name 40  "origu"
-                              Name 42  "atomu"
-                              Name 44  "value"
-                              Name 61  "dataSSB"
-                              MemberName 61(dataSSB) 0  "f"
-                              MemberName 61(dataSSB) 1  "n_frames_rendered"
-                              Name 63  "result"
-                              Name 71  "arrX"
-                              Name 72  "arrY"
-                              Name 73  "arrZ"
-                              Decorate 20(counter) Binding 0
-                              Decorate 28(countArr) Binding 0
-                              MemberDecorate 61(dataSSB) 0 Offset 0
-                              MemberDecorate 61(dataSSB) 1 Offset 16
-                              Decorate 61(dataSSB) BufferBlock
-                              Decorate 63(result) Binding 0
+                              Name 21  "counter"
+                              Name 22  "param"
+                              Name 25  "val"
+                              Name 29  "countArr"
+                              Name 36  "origi"
+                              Name 38  "atomi"
+                              Name 41  "origu"
+                              Name 43  "atomu"
+                              Name 45  "value"
+                              Name 62  "dataSSB"
+                              MemberName 62(dataSSB) 0  "f"
+                              MemberName 62(dataSSB) 1  "n_frames_rendered"
+                              Name 64  "result"
+                              Name 72  "arrX"
+                              Name 73  "arrY"
+                              Name 74  "arrZ"
+                              Decorate 21(counter) Binding 0
+                              Decorate 29(countArr) Binding 0
+                              MemberDecorate 62(dataSSB) 0 Offset 0
+                              MemberDecorate 62(dataSSB) 1 Offset 16
+                              Decorate 62(dataSSB) BufferBlock
+                              Decorate 64(result) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -49,51 +49,51 @@ TBD functionality: Is atomic_uint an opaque handle in the uniform storage class,
                8:             TypeFunction 6(int) 7(ptr)
               14:      6(int) Constant 1
               15:      6(int) Constant 0
-              18:      6(int) Constant 1024
-              19:             TypePointer AtomicCounter 6(int)
-     20(counter):     19(ptr) Variable AtomicCounter
-              25:      6(int) Constant 4
-              26:             TypeArray 6(int) 25
-              27:             TypePointer AtomicCounter 26
-    28(countArr):     27(ptr) Variable AtomicCounter
-              29:             TypeInt 32 1
-              30:     29(int) Constant 2
-              34:             TypePointer Function 29(int)
-              36:             TypePointer Workgroup 29(int)
-       37(atomi):     36(ptr) Variable Workgroup
-              38:     29(int) Constant 3
-              41:             TypePointer Workgroup 6(int)
-       42(atomu):     41(ptr) Variable Workgroup
-              43:             TypePointer UniformConstant 6(int)
-       44(value):     43(ptr) Variable UniformConstant
-              47:      6(int) Constant 7
-              52:     29(int) Constant 7
-              56:      6(int) Constant 10
-              59:             TypeFloat 32
-              60:             TypeVector 29(int) 4
-     61(dataSSB):             TypeStruct 59(float) 60(ivec4)
-              62:             TypePointer Uniform 61(dataSSB)
-      63(result):     62(ptr) Variable Uniform
-              64:     29(int) Constant 1
-              65:      6(int) Constant 2
-              66:             TypePointer Uniform 29(int)
-              69:             TypeArray 29(int) 14
-              70:             TypePointer Private 69
-        71(arrX):     70(ptr) Variable Private
-        72(arrY):     70(ptr) Variable Private
-        73(arrZ):     70(ptr) Variable Private
+              19:      6(int) Constant 1024
+              20:             TypePointer AtomicCounter 6(int)
+     21(counter):     20(ptr) Variable AtomicCounter
+              26:      6(int) Constant 4
+              27:             TypeArray 6(int) 26
+              28:             TypePointer AtomicCounter 27
+    29(countArr):     28(ptr) Variable AtomicCounter
+              30:             TypeInt 32 1
+              31:     30(int) Constant 2
+              35:             TypePointer Function 30(int)
+              37:             TypePointer Workgroup 30(int)
+       38(atomi):     37(ptr) Variable Workgroup
+              39:     30(int) Constant 3
+              42:             TypePointer Workgroup 6(int)
+       43(atomu):     42(ptr) Variable Workgroup
+              44:             TypePointer UniformConstant 6(int)
+       45(value):     44(ptr) Variable UniformConstant
+              48:      6(int) Constant 7
+              53:     30(int) Constant 7
+              57:      6(int) Constant 10
+              60:             TypeFloat 32
+              61:             TypeVector 30(int) 4
+     62(dataSSB):             TypeStruct 60(float) 61(ivec4)
+              63:             TypePointer Uniform 62(dataSSB)
+      64(result):     63(ptr) Variable Uniform
+              65:     30(int) Constant 1
+              66:      6(int) Constant 2
+              67:             TypePointer Uniform 30(int)
+              70:             TypeArray 30(int) 14
+              71:             TypePointer Private 70
+        72(arrX):     71(ptr) Variable Private
+        73(arrY):     71(ptr) Variable Private
+        74(arrZ):     71(ptr) Variable Private
          4(main):           2 Function None 3
                5:             Label
-       21(param):      7(ptr) Variable Function
-         24(val):      7(ptr) Variable Function
-                              MemoryBarrier 14 18
-              22:      6(int) Load 20(counter)
-                              Store 21(param) 22
-              23:      6(int) FunctionCall 10(func(au1;) 21(param)
-              31:     19(ptr) AccessChain 28(countArr) 30
-              32:      6(int) AtomicLoad 31 14 15
-                              Store 24(val) 32
-              33:      6(int) AtomicIDecrement 20(counter) 14 15
+       22(param):      7(ptr) Variable Function
+         25(val):      7(ptr) Variable Function
+                              MemoryBarrier 14 19
+              23:      6(int) Load 21(counter)
+                              Store 22(param) 23
+              24:      6(int) FunctionCall 10(func(au1;) 22(param)
+              32:     20(ptr) AccessChain 29(countArr) 31
+              33:      6(int) AtomicLoad 32 14 15
+                              Store 25(val) 33
+              34:      6(int) AtomicIDecrement 21(counter) 14 15
                               Return
                               FunctionEnd
    10(func(au1;):      6(int) Function None 8
@@ -104,29 +104,29 @@ TBD functionality: Is atomic_uint an opaque handle in the uniform storage class,
                               FunctionEnd
       12(atoms():           2 Function None 3
               13:             Label
-       35(origi):     34(ptr) Variable Function
-       40(origu):      7(ptr) Variable Function
-              39:     29(int) AtomicIAdd 37(atomi) 14 15 38
-                              Store 35(origi) 39
-              45:      6(int) Load 44(value)
-              46:      6(int) AtomicAnd 42(atomu) 14 15 45
-                              Store 40(origu) 46
-              48:      6(int) AtomicOr 42(atomu) 14 15 47
-                              Store 40(origu) 48
-              49:      6(int) AtomicXor 42(atomu) 14 15 47
-                              Store 40(origu) 49
-              50:      6(int) Load 44(value)
-              51:      6(int) AtomicUMin 42(atomu) 14 15 50
-                              Store 40(origu) 51
-              53:     29(int) AtomicSMax 37(atomi) 14 15 52
-                              Store 35(origi) 53
-              54:     29(int) Load 35(origi)
-              55:     29(int) AtomicExchange 37(atomi) 14 15 54
-                              Store 35(origi) 55
-              57:      6(int) Load 44(value)
-              58:      6(int) AtomicCompareExchange 42(atomu) 14 15 15 57 56
-                              Store 40(origu) 58
-              67:     66(ptr) AccessChain 63(result) 64 65
-              68:     29(int) AtomicIAdd 67 14 15 64
+       36(origi):     35(ptr) Variable Function
+       41(origu):      7(ptr) Variable Function
+              40:     30(int) AtomicIAdd 38(atomi) 14 15 39
+                              Store 36(origi) 40
+              46:      6(int) Load 45(value)
+              47:      6(int) AtomicAnd 43(atomu) 14 15 46
+                              Store 41(origu) 47
+              49:      6(int) AtomicOr 43(atomu) 14 15 48
+                              Store 41(origu) 49
+              50:      6(int) AtomicXor 43(atomu) 14 15 48
+                              Store 41(origu) 50
+              51:      6(int) Load 45(value)
+              52:      6(int) AtomicUMin 43(atomu) 14 15 51
+                              Store 41(origu) 52
+              54:     30(int) AtomicSMax 38(atomi) 14 15 53
+                              Store 36(origi) 54
+              55:     30(int) Load 36(origi)
+              56:     30(int) AtomicExchange 38(atomi) 14 15 55
+                              Store 36(origi) 56
+              58:      6(int) Load 45(value)
+              59:      6(int) AtomicCompareExchange 43(atomu) 14 15 15 58 57
+                              Store 41(origu) 59
+              68:     67(ptr) AccessChain 64(result) 65 66
+              69:     30(int) AtomicIAdd 68 14 15 65
                               Return
                               FunctionEnd
index 7217ae7..0fece20 100644 (file)
@@ -7,86 +7,86 @@ Linked vertex stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 49
+// Id's are bound by 50
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "main" 23 47 48
+                              EntryPoint Vertex 4  "main" 24 48 49
                               Source GLSL 450
                               Name 4  "main"
                               Name 10  "foo(b1;"
                               Name 9  "b"
-                              Name 21  "gl_PerVertex"
-                              MemberName 21(gl_PerVertex) 0  "gl_Position"
-                              MemberName 21(gl_PerVertex) 1  "gl_PointSize"
-                              MemberName 21(gl_PerVertex) 2  "gl_ClipDistance"
-                              MemberName 21(gl_PerVertex) 3  "gl_CullDistance"
-                              Name 23  ""
-                              Name 28  "ubname"
-                              MemberName 28(ubname) 0  "b"
-                              Name 30  "ubinst"
-                              Name 31  "param"
-                              Name 47  "gl_VertexID"
-                              Name 48  "gl_InstanceID"
-                              MemberDecorate 21(gl_PerVertex) 0 BuiltIn Position
-                              MemberDecorate 21(gl_PerVertex) 1 BuiltIn PointSize
-                              MemberDecorate 21(gl_PerVertex) 2 BuiltIn ClipDistance
-                              MemberDecorate 21(gl_PerVertex) 3 BuiltIn CullDistance
-                              Decorate 21(gl_PerVertex) Block
-                              Decorate 28(ubname) GLSLShared
-                              Decorate 28(ubname) Block
-                              Decorate 47(gl_VertexID) BuiltIn VertexId
-                              Decorate 48(gl_InstanceID) BuiltIn InstanceId
+                              Name 22  "gl_PerVertex"
+                              MemberName 22(gl_PerVertex) 0  "gl_Position"
+                              MemberName 22(gl_PerVertex) 1  "gl_PointSize"
+                              MemberName 22(gl_PerVertex) 2  "gl_ClipDistance"
+                              MemberName 22(gl_PerVertex) 3  "gl_CullDistance"
+                              Name 24  ""
+                              Name 29  "ubname"
+                              MemberName 29(ubname) 0  "b"
+                              Name 31  "ubinst"
+                              Name 32  "param"
+                              Name 48  "gl_VertexID"
+                              Name 49  "gl_InstanceID"
+                              MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position
+                              MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize
+                              MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance
+                              MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance
+                              Decorate 22(gl_PerVertex) Block
+                              Decorate 29(ubname) GLSLShared
+                              Decorate 29(ubname) Block
+                              Decorate 48(gl_VertexID) BuiltIn VertexId
+                              Decorate 49(gl_InstanceID) BuiltIn InstanceId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeBool
                7:             TypePointer Function 6(bool)
                8:             TypeFunction 6(bool) 7(ptr)
               13:     6(bool) ConstantFalse
-              16:             TypeFloat 32
-              17:             TypeVector 16(float) 4
-              18:             TypeInt 32 0
-              19:     18(int) Constant 1
-              20:             TypeArray 16(float) 19
-21(gl_PerVertex):             TypeStruct 17(fvec4) 16(float) 20 20
-              22:             TypePointer Output 21(gl_PerVertex)
-              23:     22(ptr) Variable Output
-              24:             TypeInt 32 1
-              25:     24(int) Constant 0
-              26:             TypePointer Function 17(fvec4)
-      28(ubname):             TypeStruct 6(bool)
-              29:             TypePointer Uniform 28(ubname)
-      30(ubinst):     29(ptr) Variable Uniform
-              32:             TypePointer Uniform 6(bool)
-              38:   16(float) Constant 0
-              39:   17(fvec4) ConstantComposite 38 38 38 38
-              41:   16(float) Constant 1065353216
-              42:   17(fvec4) ConstantComposite 41 41 41 41
-              44:             TypePointer Output 17(fvec4)
-              46:             TypePointer Input 24(int)
- 47(gl_VertexID):     46(ptr) Variable Input
-48(gl_InstanceID):     46(ptr) Variable Input
+              17:             TypeFloat 32
+              18:             TypeVector 17(float) 4
+              19:             TypeInt 32 0
+              20:     19(int) Constant 1
+              21:             TypeArray 17(float) 20
+22(gl_PerVertex):             TypeStruct 18(fvec4) 17(float) 21 21
+              23:             TypePointer Output 22(gl_PerVertex)
+              24:     23(ptr) Variable Output
+              25:             TypeInt 32 1
+              26:     25(int) Constant 0
+              27:             TypePointer Function 18(fvec4)
+      29(ubname):             TypeStruct 6(bool)
+              30:             TypePointer Uniform 29(ubname)
+      31(ubinst):     30(ptr) Variable Uniform
+              33:             TypePointer Uniform 6(bool)
+              39:   17(float) Constant 0
+              40:   18(fvec4) ConstantComposite 39 39 39 39
+              42:   17(float) Constant 1065353216
+              43:   18(fvec4) ConstantComposite 42 42 42 42
+              45:             TypePointer Output 18(fvec4)
+              47:             TypePointer Input 25(int)
+ 48(gl_VertexID):     47(ptr) Variable Input
+49(gl_InstanceID):     47(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
-              27:     26(ptr) Variable Function
-       31(param):      7(ptr) Variable Function
-              33:     32(ptr) AccessChain 30(ubinst) 25
-              34:     6(bool) Load 33
-                              Store 31(param) 34
-              35:     6(bool) FunctionCall 10(foo(b1;) 31(param)
-                              SelectionMerge 37 None
-                              BranchConditional 35 36 40
-              36:               Label
-                                Store 27 39
-                                Branch 37
-              40:               Label
-                                Store 27 42
-                                Branch 37
-              37:             Label
-              43:   17(fvec4) Load 27
-              45:     44(ptr) AccessChain 23 25
-                              Store 45 43
+              28:     27(ptr) Variable Function
+       32(param):      7(ptr) Variable Function
+              34:     33(ptr) AccessChain 31(ubinst) 26
+              35:     6(bool) Load 34
+                              Store 32(param) 35
+              36:     6(bool) FunctionCall 10(foo(b1;) 32(param)
+                              SelectionMerge 38 None
+                              BranchConditional 36 37 41
+              37:               Label
+                                Store 28 40
+                                Branch 38
+              41:               Label
+                                Store 28 43
+                                Branch 38
+              38:             Label
+              44:   18(fvec4) Load 28
+              46:     45(ptr) AccessChain 24 26
+                              Store 46 44
                               Return
                               FunctionEnd
      10(foo(b1;):     6(bool) Function None 8
index 0b77cb1..b2618c1 100644 (file)
@@ -50,4 +50,6 @@ Linked vertex stage:
               19:      6(int) IAdd 17 18
                               Store 8(i) 19
                               Branch 10
+              12:             Label
+                              Return
                               FunctionEnd
index 8d0323b..2000a36 100755 (executable)
@@ -5,7 +5,7 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 60
+// Id's are bound by 61
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -24,13 +24,13 @@ Linked fragment stage:
                               Name 27  "f"
                               Name 30  "gl_FragColor"
                               Name 36  "d"
-                              Name 59  "bigColor"
+                              Name 60  "bigColor"
                               Decorate 18(color) RelaxedPrecision
                               Decorate 20(BaseColor) RelaxedPrecision
                               Decorate 27(f) RelaxedPrecision
                               Decorate 30(gl_FragColor) RelaxedPrecision
                               Decorate 36(d) RelaxedPrecision
-                              Decorate 59(bigColor) RelaxedPrecision
+                              Decorate 60(bigColor) RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
                8:             TypeFloat 32
@@ -52,8 +52,8 @@ Linked fragment stage:
               49:             TypeInt 32 0
               50:     49(int) Constant 0
               53:     49(int) Constant 1
-              58:             TypePointer UniformConstant 12(fvec4)
-    59(bigColor):     58(ptr) Variable UniformConstant
+              59:             TypePointer UniformConstant 12(fvec4)
+    60(bigColor):     59(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
        18(color):     13(ptr) Variable Function
index 5716f1d..f2d381d 100755 (executable)
@@ -7,12 +7,12 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 76
+// Id's are bound by 77
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 57 68
+                              EntryPoint Fragment 4  "main" 58 69
                               ExecutionMode 4 OriginLowerLeft
                               Source GLSL 130
                               Name 4  "main"
@@ -22,14 +22,14 @@ Linked fragment stage:
                               Name 16  "unreachableReturn("
                               Name 18  "missingReturn("
                               Name 21  "h"
-                              Name 34  "d"
-                              Name 55  "color"
-                              Name 57  "BaseColor"
-                              Name 58  "param"
-                              Name 63  "f"
-                              Name 65  "g"
-                              Name 68  "gl_FragColor"
-                              Name 75  "bigColor"
+                              Name 35  "d"
+                              Name 56  "color"
+                              Name 58  "BaseColor"
+                              Name 59  "param"
+                              Name 64  "f"
+                              Name 66  "g"
+                              Name 69  "gl_FragColor"
+                              Name 76  "bigColor"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -44,42 +44,42 @@ Linked fragment stage:
               24:     23(int) Constant 0
               25:             TypePointer Function 6(float)
               28:     23(int) Constant 1
-              33:             TypePointer UniformConstant 6(float)
-           34(d):     33(ptr) Variable UniformConstant
-              36:    6(float) Constant 1082549862
-              37:             TypeBool
-              41:    6(float) Constant 1067030938
-              44:    6(float) Constant 1083179008
-              52:    6(float) Constant 1081711002
-              56:             TypePointer Input 7(fvec4)
-   57(BaseColor):     56(ptr) Variable Input
-              67:             TypePointer Output 7(fvec4)
-68(gl_FragColor):     67(ptr) Variable Output
-              74:             TypePointer UniformConstant 7(fvec4)
-    75(bigColor):     74(ptr) Variable UniformConstant
+              34:             TypePointer UniformConstant 6(float)
+           35(d):     34(ptr) Variable UniformConstant
+              37:    6(float) Constant 1082549862
+              38:             TypeBool
+              42:    6(float) Constant 1067030938
+              45:    6(float) Constant 1083179008
+              53:    6(float) Constant 1081711002
+              57:             TypePointer Input 7(fvec4)
+   58(BaseColor):     57(ptr) Variable Input
+              68:             TypePointer Output 7(fvec4)
+69(gl_FragColor):     68(ptr) Variable Output
+              75:             TypePointer UniformConstant 7(fvec4)
+    76(bigColor):     75(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-       55(color):      8(ptr) Variable Function
-       58(param):      8(ptr) Variable Function
-           63(f):     25(ptr) Variable Function
-           65(g):     25(ptr) Variable Function
+       56(color):      8(ptr) Variable Function
+       59(param):      8(ptr) Variable Function
+           64(f):     25(ptr) Variable Function
+           66(g):     25(ptr) Variable Function
                               Store 21(h) 22
-              59:    7(fvec4) Load 57(BaseColor)
-                              Store 58(param) 59
-              60:    6(float) FunctionCall 11(foo(vf4;) 58(param)
-              61:    7(fvec4) CompositeConstruct 60 60 60 60
-                              Store 55(color) 61
-              62:           2 FunctionCall 13(bar()
-              64:    6(float) FunctionCall 16(unreachableReturn()
-                              Store 63(f) 64
-              66:    6(float) FunctionCall 18(missingReturn()
-                              Store 65(g) 66
-              69:    7(fvec4) Load 55(color)
-              70:    6(float) Load 63(f)
-              71:    7(fvec4) VectorTimesScalar 69 70
-              72:    6(float) Load 21(h)
-              73:    7(fvec4) VectorTimesScalar 71 72
-                              Store 68(gl_FragColor) 73
+              60:    7(fvec4) Load 58(BaseColor)
+                              Store 59(param) 60
+              61:    6(float) FunctionCall 11(foo(vf4;) 59(param)
+              62:    7(fvec4) CompositeConstruct 61 61 61 61
+                              Store 56(color) 62
+              63:           2 FunctionCall 13(bar()
+              65:    6(float) FunctionCall 16(unreachableReturn()
+                              Store 64(f) 65
+              67:    6(float) FunctionCall 18(missingReturn()
+                              Store 66(g) 67
+              70:    7(fvec4) Load 56(color)
+              71:    6(float) Load 64(f)
+              72:    7(fvec4) VectorTimesScalar 70 71
+              73:    6(float) Load 21(h)
+              74:    7(fvec4) VectorTimesScalar 72 73
+                              Store 69(gl_FragColor) 74
                               Return
                               FunctionEnd
     11(foo(vf4;):    6(float) Function None 9
@@ -98,29 +98,29 @@ Linked fragment stage:
                               FunctionEnd
 16(unreachableReturn():    6(float) Function None 15
               17:             Label
-              35:    6(float) Load 34(d)
-              38:    37(bool) FOrdLessThan 35 36
-                              SelectionMerge 40 None
-                              BranchConditional 38 39 43
-              39:               Label
-                                ReturnValue 41
-              43:               Label
-                                ReturnValue 44
-              40:             Label
-              46:    6(float) Undef
-                              ReturnValue 46
+              36:    6(float) Load 35(d)
+              39:    38(bool) FOrdLessThan 36 37
+                              SelectionMerge 41 None
+                              BranchConditional 39 40 44
+              40:               Label
+                                ReturnValue 42
+              44:               Label
+                                ReturnValue 45
+              41:             Label
+              47:    6(float) Undef
+                              ReturnValue 47
                               FunctionEnd
 18(missingReturn():    6(float) Function None 15
               19:             Label
-              47:    6(float) Load 34(d)
-              48:    37(bool) FOrdLessThan 47 44
-                              SelectionMerge 50 None
-                              BranchConditional 48 49 50
-              49:               Label
-              51:    6(float)   Load 34(d)
-                                Store 21(h) 51
-                                ReturnValue 52
-              50:             Label
-              54:    6(float) Undef
-                              ReturnValue 54
+              48:    6(float) Load 35(d)
+              49:    38(bool) FOrdLessThan 48 45
+                              SelectionMerge 51 None
+                              BranchConditional 49 50 51
+              50:               Label
+              52:    6(float)   Load 35(d)
+                                Store 21(h) 52
+                                ReturnValue 53
+              51:             Label
+              55:    6(float) Undef
+                              ReturnValue 55
                               FunctionEnd
index 35d8100..9978539 100755 (executable)
@@ -7,12 +7,12 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 153
+// Id's are bound by 156
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 149
+                              EntryPoint Fragment 4  "main" 152
                               ExecutionMode 4 OriginLowerLeft
                               Source GLSL 400
                               Name 4  "main"
@@ -29,25 +29,25 @@ Linked fragment stage:
                               Name 24  "r"
                               Name 28  "foo3("
                               Name 30  "sum"
-                              Name 74  "u"
-                              Name 86  "t"
-                              Name 89  "s"
-                              MemberName 89(s) 0  "t"
-                              Name 91  "f"
-                              Name 95  "color"
-                              Name 101  "e"
-                              Name 102  "param"
-                              Name 103  "param"
-                              Name 104  "param"
+                              Name 76  "u"
+                              Name 89  "t"
+                              Name 92  "s"
+                              MemberName 92(s) 0  "t"
+                              Name 94  "f"
+                              Name 98  "color"
+                              Name 104  "e"
                               Name 105  "param"
-                              Name 120  "ret"
-                              Name 122  "tempReturn"
-                              Name 127  "tempArg"
-                              Name 128  "param"
-                              Name 129  "param"
-                              Name 130  "param"
-                              Name 133  "arg"
-                              Name 149  "gl_FragColor"
+                              Name 106  "param"
+                              Name 107  "param"
+                              Name 108  "param"
+                              Name 123  "ret"
+                              Name 125  "tempReturn"
+                              Name 130  "tempArg"
+                              Name 131  "param"
+                              Name 132  "param"
+                              Name 133  "param"
+                              Name 136  "arg"
+                              Name 152  "gl_FragColor"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -61,103 +61,103 @@ Linked fragment stage:
               27:             TypeFunction 6(int)
               38:      6(int) Constant 64
               43:      6(int) Constant 1024
-              61:   17(float) Constant 1077936128
-              65:   17(float) Constant 1084227584
-              66:             TypeInt 32 0
-              67:     66(int) Constant 1
-              73:             TypePointer UniformConstant 17(float)
-           74(u):     73(ptr) Variable UniformConstant
-              76:   17(float) Constant 1078774989
-              77:             TypeBool
-              82:      6(int) Constant 1000000
-              84:      6(int) Constant 2000000
-              87:      6(int) Constant 2
-              88:             TypeVector 6(int) 4
-           89(s):             TypeStruct 88(ivec4)
-              90:             TypePointer Function 89(s)
-              92:      6(int) Constant 0
-              93:      6(int) Constant 32
-              96:      6(int) Constant 1
-             100:      6(int) Constant 8
-             112:      6(int) Constant 128
-             121:             TypePointer Private 6(int)
- 122(tempReturn):    121(ptr) Variable Private
-             123:   17(float) Constant 1082130432
-             124:   17(float) Constant 1065353216
-             125:   17(float) Constant 1073741824
-             126:   19(fvec3) ConstantComposite 124 125 61
-             147:             TypeVector 17(float) 4
-             148:             TypePointer Output 147(fvec4)
-149(gl_FragColor):    148(ptr) Variable Output
+              62:   17(float) Constant 1077936128
+              66:   17(float) Constant 1084227584
+              67:             TypeInt 32 0
+              68:     67(int) Constant 1
+              75:             TypePointer UniformConstant 17(float)
+           76(u):     75(ptr) Variable UniformConstant
+              78:   17(float) Constant 1078774989
+              79:             TypeBool
+              84:      6(int) Constant 1000000
+              86:      6(int) Constant 2000000
+              90:      6(int) Constant 2
+              91:             TypeVector 6(int) 4
+           92(s):             TypeStruct 91(ivec4)
+              93:             TypePointer Function 92(s)
+              95:      6(int) Constant 0
+              96:      6(int) Constant 32
+              99:      6(int) Constant 1
+             103:      6(int) Constant 8
+             115:      6(int) Constant 128
+             124:             TypePointer Private 6(int)
+ 125(tempReturn):    124(ptr) Variable Private
+             126:   17(float) Constant 1082130432
+             127:   17(float) Constant 1065353216
+             128:   17(float) Constant 1073741824
+             129:   19(fvec3) ConstantComposite 127 128 62
+             150:             TypeVector 17(float) 4
+             151:             TypePointer Output 150(fvec4)
+152(gl_FragColor):    151(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-           86(t):      7(ptr) Variable Function
-           91(f):     90(ptr) Variable Function
-       95(color):      7(ptr) Variable Function
-          101(e):      7(ptr) Variable Function
-      102(param):      7(ptr) Variable Function
-      103(param):      7(ptr) Variable Function
-      104(param):      7(ptr) Variable Function
+           89(t):      7(ptr) Variable Function
+           94(f):     93(ptr) Variable Function
+       98(color):      7(ptr) Variable Function
+          104(e):      7(ptr) Variable Function
       105(param):      7(ptr) Variable Function
-        120(ret):     18(ptr) Variable Function
-    127(tempArg):      7(ptr) Variable Function
-      128(param):     18(ptr) Variable Function
-      129(param):     20(ptr) Variable Function
-      130(param):      7(ptr) Variable Function
-        133(arg):     18(ptr) Variable Function
-                              Store 86(t) 87
-              94:      7(ptr) AccessChain 91(f) 92 67
-                              Store 94 93
-              97:      6(int) Load 86(t)
-              98:      6(int) Load 86(t)
-              99:      6(int) IAdd 97 98
-                              Store 102(param) 96
-                              Store 103(param) 99
-             106:      7(ptr) AccessChain 91(f) 92 67
-             107:      6(int) Load 106
-                              Store 105(param) 107
-             108:      6(int) FunctionCall 15(foo(i1;i1;i1;i1;i1;i1;) 102(param) 87 103(param) 100 104(param) 105(param)
-             109:      6(int) Load 104(param)
-                              Store 101(e) 109
-             110:      6(int) Load 105(param)
-             111:      7(ptr) AccessChain 91(f) 92 67
-                              Store 111 110
-                              Store 95(color) 108
-             113:      6(int) Load 101(e)
-             114:      7(ptr) AccessChain 91(f) 92 67
-             115:      6(int) Load 114
-             116:      6(int) IAdd 113 115
-             117:      6(int) IMul 112 116
-             118:      6(int) Load 95(color)
-             119:      6(int) IAdd 118 117
-                              Store 95(color) 119
-                              Store 128(param) 123
-                              Store 129(param) 126
-             131:      6(int) FunctionCall 25(foo2(f1;vf3;i1;) 128(param) 129(param) 130(param)
-             132:      6(int) Load 130(param)
-                              Store 127(tempArg) 132
-                              Store 122(tempReturn) 131
-             134:      6(int) Load 127(tempArg)
-             135:   17(float) ConvertSToF 134
-                              Store 133(arg) 135
-             136:      6(int) Load 122(tempReturn)
-             137:   17(float) ConvertSToF 136
-                              Store 120(ret) 137
-             138:   17(float) Load 120(ret)
-             139:   17(float) Load 133(arg)
-             140:   17(float) FAdd 138 139
-             141:      6(int) ConvertFToS 140
-             142:      6(int) Load 95(color)
-             143:      6(int) IAdd 142 141
-                              Store 95(color) 143
-             144:      6(int) FunctionCall 28(foo3()
-             145:      6(int) Load 95(color)
+      106(param):      7(ptr) Variable Function
+      107(param):      7(ptr) Variable Function
+      108(param):      7(ptr) Variable Function
+        123(ret):     18(ptr) Variable Function
+    130(tempArg):      7(ptr) Variable Function
+      131(param):     18(ptr) Variable Function
+      132(param):     20(ptr) Variable Function
+      133(param):      7(ptr) Variable Function
+        136(arg):     18(ptr) Variable Function
+                              Store 89(t) 90
+              97:      7(ptr) AccessChain 94(f) 95 68
+                              Store 97 96
+             100:      6(int) Load 89(t)
+             101:      6(int) Load 89(t)
+             102:      6(int) IAdd 100 101
+                              Store 105(param) 99
+                              Store 106(param) 102
+             109:      7(ptr) AccessChain 94(f) 95 68
+             110:      6(int) Load 109
+                              Store 108(param) 110
+             111:      6(int) FunctionCall 15(foo(i1;i1;i1;i1;i1;i1;) 105(param) 90 106(param) 103 107(param) 108(param)
+             112:      6(int) Load 107(param)
+                              Store 104(e) 112
+             113:      6(int) Load 108(param)
+             114:      7(ptr) AccessChain 94(f) 95 68
+                              Store 114 113
+                              Store 98(color) 111
+             116:      6(int) Load 104(e)
+             117:      7(ptr) AccessChain 94(f) 95 68
+             118:      6(int) Load 117
+             119:      6(int) IAdd 116 118
+             120:      6(int) IMul 115 119
+             121:      6(int) Load 98(color)
+             122:      6(int) IAdd 121 120
+                              Store 98(color) 122
+                              Store 131(param) 126
+                              Store 132(param) 129
+             134:      6(int) FunctionCall 25(foo2(f1;vf3;i1;) 131(param) 132(param) 133(param)
+             135:      6(int) Load 133(param)
+                              Store 130(tempArg) 135
+                              Store 125(tempReturn) 134
+             137:      6(int) Load 130(tempArg)
+             138:   17(float) ConvertSToF 137
+                              Store 136(arg) 138
+             139:      6(int) Load 125(tempReturn)
+             140:   17(float) ConvertSToF 139
+                              Store 123(ret) 140
+             141:   17(float) Load 123(ret)
+             142:   17(float) Load 136(arg)
+             143:   17(float) FAdd 141 142
+             144:      6(int) ConvertFToS 143
+             145:      6(int) Load 98(color)
              146:      6(int) IAdd 145 144
-                              Store 95(color) 146
-             150:      6(int) Load 95(color)
-             151:   17(float) ConvertSToF 150
-             152:  147(fvec4) CompositeConstruct 151 151 151 151
-                              Store 149(gl_FragColor) 152
+                              Store 98(color) 146
+             147:      6(int) FunctionCall 28(foo3()
+             148:      6(int) Load 98(color)
+             149:      6(int) IAdd 148 147
+                              Store 98(color) 149
+             153:      6(int) Load 98(color)
+             154:   17(float) ConvertSToF 153
+             155:  150(fvec4) CompositeConstruct 154 154 154 154
+                              Store 152(gl_FragColor) 155
                               Return
                               FunctionEnd
 15(foo(i1;i1;i1;i1;i1;i1;):      6(int) Function None 8
@@ -209,24 +209,24 @@ Linked fragment stage:
            23(b):     20(ptr) FunctionParameter
            24(r):      7(ptr) FunctionParameter
               26:             Label
-              62:   17(float) Load 22(a)
-              63:   17(float) FMul 61 62
-              64:      6(int) ConvertFToS 63
-                              Store 24(r) 64
-              68:     18(ptr) AccessChain 23(b) 67
-              69:   17(float) Load 68
-              70:   17(float) FMul 65 69
-              71:      6(int) ConvertFToS 70
-                              ReturnValue 71
+              63:   17(float) Load 22(a)
+              64:   17(float) FMul 62 63
+              65:      6(int) ConvertFToS 64
+                              Store 24(r) 65
+              69:     18(ptr) AccessChain 23(b) 68
+              70:   17(float) Load 69
+              71:   17(float) FMul 66 70
+              72:      6(int) ConvertFToS 71
+                              ReturnValue 72
                               FunctionEnd
        28(foo3():      6(int) Function None 27
               29:             Label
-              75:   17(float) Load 74(u)
-              78:    77(bool) FOrdGreaterThan 75 76
-                              SelectionMerge 80 None
-                              BranchConditional 78 79 80
-              79:               Label
+              77:   17(float) Load 76(u)
+              80:    79(bool) FOrdGreaterThan 77 78
+                              SelectionMerge 82 None
+                              BranchConditional 80 81 82
+              81:               Label
                                 Kill
-              80:             Label
-                              ReturnValue 84
+              82:             Label
+                              ReturnValue 86
                               FunctionEnd
index 122adc9..bf0a3d1 100755 (executable)
@@ -5,12 +5,12 @@ Linked vertex stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 93
+// Id's are bound by 96
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "main" 69 73 92
+                              EntryPoint Vertex 4  "main" 72 76 95
                               Source GLSL 130
                               Name 4  "main"
                               Name 14  "xf(mf33;vf3;"
@@ -21,18 +21,18 @@ Linked vertex stage:
                               Name 26  "mxv(mf44;vf3;"
                               Name 24  "m4"
                               Name 25  "v"
-                              Name 63  "param"
-                              Name 69  "gl_Position"
-                              Name 71  "m4"
-                              Name 73  "v3"
-                              Name 74  "param"
-                              Name 76  "param"
-                              Name 80  "m3"
-                              Name 81  "param"
-                              Name 83  "param"
-                              Name 92  "gl_VertexID"
-                              Decorate 69(gl_Position) BuiltIn Position
-                              Decorate 92(gl_VertexID) BuiltIn VertexId
+                              Name 65  "param"
+                              Name 72  "gl_Position"
+                              Name 74  "m4"
+                              Name 76  "v3"
+                              Name 77  "param"
+                              Name 79  "param"
+                              Name 83  "m3"
+                              Name 84  "param"
+                              Name 86  "param"
+                              Name 95  "gl_VertexID"
+                              Decorate 72(gl_Position) BuiltIn Position
+                              Decorate 95(gl_VertexID) BuiltIn VertexId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -46,45 +46,45 @@ Linked vertex stage:
               18:             TypePointer Function 17
               19:             TypeFunction 8 18(ptr)
               23:             TypeFunction 7(fvec3) 18(ptr) 10(ptr)
-              32:             TypeInt 32 1
-              33:     32(int) Constant 0
-              34:             TypePointer Function 16(fvec4)
-              38:     32(int) Constant 1
-              42:     32(int) Constant 2
-              46:    6(float) Constant 1065353216
-              47:    6(float) Constant 0
-              68:             TypePointer Output 16(fvec4)
69(gl_Position):     68(ptr) Variable Output
-              70:             TypePointer UniformConstant 17
-          71(m4):     70(ptr) Variable UniformConstant
-              72:             TypePointer Input 7(fvec3)
-          73(v3):     72(ptr) Variable Input
-              79:             TypePointer UniformConstant 8
-          80(m3):     79(ptr) Variable UniformConstant
-              91:             TypePointer Input 32(int)
- 92(gl_VertexID):     91(ptr) Variable Input
+              33:             TypeInt 32 1
+              34:     33(int) Constant 0
+              35:             TypePointer Function 16(fvec4)
+              39:     33(int) Constant 1
+              43:     33(int) Constant 2
+              47:    6(float) Constant 1065353216
+              48:    6(float) Constant 0
+              71:             TypePointer Output 16(fvec4)
72(gl_Position):     71(ptr) Variable Output
+              73:             TypePointer UniformConstant 17
+          74(m4):     73(ptr) Variable UniformConstant
+              75:             TypePointer Input 7(fvec3)
+          76(v3):     75(ptr) Variable Input
+              82:             TypePointer UniformConstant 8
+          83(m3):     82(ptr) Variable UniformConstant
+              94:             TypePointer Input 33(int)
+ 95(gl_VertexID):     94(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
-       74(param):     18(ptr) Variable Function
-       76(param):     10(ptr) Variable Function
-       81(param):      9(ptr) Variable Function
-       83(param):     10(ptr) Variable Function
-              75:          17 Load 71(m4)
-                              Store 74(param) 75
-              77:    7(fvec3) Load 73(v3)
-                              Store 76(param) 77
-              78:    7(fvec3) FunctionCall 26(mxv(mf44;vf3;) 74(param) 76(param)
-              82:           8 Load 80(m3)
-                              Store 81(param) 82
-              84:    7(fvec3) Load 73(v3)
-                              Store 83(param) 84
-              85:    7(fvec3) FunctionCall 14(xf(mf33;vf3;) 81(param) 83(param)
-              86:    7(fvec3) FAdd 78 85
-              87:    6(float) CompositeExtract 86 0
-              88:    6(float) CompositeExtract 86 1
-              89:    6(float) CompositeExtract 86 2
-              90:   16(fvec4) CompositeConstruct 87 88 89 46
-                              Store 69(gl_Position) 90
+       77(param):     18(ptr) Variable Function
+       79(param):     10(ptr) Variable Function
+       84(param):      9(ptr) Variable Function
+       86(param):     10(ptr) Variable Function
+              78:          17 Load 74(m4)
+                              Store 77(param) 78
+              80:    7(fvec3) Load 76(v3)
+                              Store 79(param) 80
+              81:    7(fvec3) FunctionCall 26(mxv(mf44;vf3;) 77(param) 79(param)
+              85:           8 Load 83(m3)
+                              Store 84(param) 85
+              87:    7(fvec3) Load 76(v3)
+                              Store 86(param) 87
+              88:    7(fvec3) FunctionCall 14(xf(mf33;vf3;) 84(param) 86(param)
+              89:    7(fvec3) FAdd 81 88
+              90:    6(float) CompositeExtract 89 0
+              91:    6(float) CompositeExtract 89 1
+              92:    6(float) CompositeExtract 89 2
+              93:   16(fvec4) CompositeConstruct 90 91 92 47
+                              Store 72(gl_Position) 93
                               Return
                               FunctionEnd
 14(xf(mf33;vf3;):    7(fvec3) Function None 11
@@ -99,39 +99,39 @@ Linked vertex stage:
   21(Mat3(mf44;):           8 Function None 19
            20(m):     18(ptr) FunctionParameter
               22:             Label
-              35:     34(ptr) AccessChain 20(m) 33
-              36:   16(fvec4) Load 35
-              37:    7(fvec3) VectorShuffle 36 36 0 1 2
-              39:     34(ptr) AccessChain 20(m) 38
-              40:   16(fvec4) Load 39
-              41:    7(fvec3) VectorShuffle 40 40 0 1 2
-              43:     34(ptr) AccessChain 20(m) 42
-              44:   16(fvec4) Load 43
-              45:    7(fvec3) VectorShuffle 44 44 0 1 2
-              48:    6(float) CompositeExtract 37 0
-              49:    6(float) CompositeExtract 37 1
-              50:    6(float) CompositeExtract 37 2
-              51:    6(float) CompositeExtract 41 0
-              52:    6(float) CompositeExtract 41 1
-              53:    6(float) CompositeExtract 41 2
-              54:    6(float) CompositeExtract 45 0
-              55:    6(float) CompositeExtract 45 1
-              56:    6(float) CompositeExtract 45 2
-              57:    7(fvec3) CompositeConstruct 48 49 50
-              58:    7(fvec3) CompositeConstruct 51 52 53
-              59:    7(fvec3) CompositeConstruct 54 55 56
-              60:           8 CompositeConstruct 57 58 59
-                              ReturnValue 60
+              36:     35(ptr) AccessChain 20(m) 34
+              37:   16(fvec4) Load 36
+              38:    7(fvec3) VectorShuffle 37 37 0 1 2
+              40:     35(ptr) AccessChain 20(m) 39
+              41:   16(fvec4) Load 40
+              42:    7(fvec3) VectorShuffle 41 41 0 1 2
+              44:     35(ptr) AccessChain 20(m) 43
+              45:   16(fvec4) Load 44
+              46:    7(fvec3) VectorShuffle 45 45 0 1 2
+              49:    6(float) CompositeExtract 38 0
+              50:    6(float) CompositeExtract 38 1
+              51:    6(float) CompositeExtract 38 2
+              52:    6(float) CompositeExtract 42 0
+              53:    6(float) CompositeExtract 42 1
+              54:    6(float) CompositeExtract 42 2
+              55:    6(float) CompositeExtract 46 0
+              56:    6(float) CompositeExtract 46 1
+              57:    6(float) CompositeExtract 46 2
+              58:    7(fvec3) CompositeConstruct 49 50 51
+              59:    7(fvec3) CompositeConstruct 52 53 54
+              60:    7(fvec3) CompositeConstruct 55 56 57
+              61:           8 CompositeConstruct 58 59 60
+                              ReturnValue 61
                               FunctionEnd
 26(mxv(mf44;vf3;):    7(fvec3) Function None 23
           24(m4):     18(ptr) FunctionParameter
            25(v):     10(ptr) FunctionParameter
               27:             Label
-       63(param):     18(ptr) Variable Function
-              62:    7(fvec3) Load 25(v)
-              64:          17 Load 24(m4)
-                              Store 63(param) 64
-              65:           8 FunctionCall 21(Mat3(mf44;) 63(param)
-              66:    7(fvec3) VectorTimesMatrix 62 65
-                              ReturnValue 66
+       65(param):     18(ptr) Variable Function
+              64:    7(fvec3) Load 25(v)
+              66:          17 Load 24(m4)
+                              Store 65(param) 66
+              67:           8 FunctionCall 21(Mat3(mf44;) 65(param)
+              68:    7(fvec3) VectorTimesMatrix 64 67
+                              ReturnValue 68
                               FunctionEnd
index 8c28fed..e120eec 100755 (executable)
@@ -5,12 +5,12 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 112
+// Id's are bound by 114
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 23 57 59 71
+                              EntryPoint Fragment 4  "main" 23 59 61 73
                               ExecutionMode 4 OriginLowerLeft
                               Source ESSL 300
                               Name 4  "main"
@@ -19,29 +19,29 @@ Linked fragment stage:
                               Name 19  "boolfun(vb2;"
                               Name 18  "bv2"
                               Name 23  "highfin"
-                              Name 36  "sum"
-                              Name 38  "uniform_medium"
-                              Name 40  "uniform_high"
-                              Name 46  "uniform_low"
-                              Name 51  "arg1"
-                              Name 53  "arg2"
-                              Name 55  "d"
-                              Name 57  "lowfin"
-                              Name 59  "mediumfin"
-                              Name 63  "global_highp"
-                              Name 67  "local_highp"
-                              Name 71  "mediumfout"
-                              Name 102  "ub2"
-                              Name 103  "param"
-                              Decorate 36(sum) RelaxedPrecision
-                              Decorate 38(uniform_medium) RelaxedPrecision
-                              Decorate 46(uniform_low) RelaxedPrecision
-                              Decorate 51(arg1) RelaxedPrecision
-                              Decorate 53(arg2) RelaxedPrecision
-                              Decorate 55(d) RelaxedPrecision
-                              Decorate 57(lowfin) RelaxedPrecision
-                              Decorate 59(mediumfin) RelaxedPrecision
-                              Decorate 71(mediumfout) RelaxedPrecision
+                              Name 38  "sum"
+                              Name 40  "uniform_medium"
+                              Name 42  "uniform_high"
+                              Name 48  "uniform_low"
+                              Name 53  "arg1"
+                              Name 55  "arg2"
+                              Name 57  "d"
+                              Name 59  "lowfin"
+                              Name 61  "mediumfin"
+                              Name 65  "global_highp"
+                              Name 69  "local_highp"
+                              Name 73  "mediumfout"
+                              Name 104  "ub2"
+                              Name 105  "param"
+                              Decorate 38(sum) RelaxedPrecision
+                              Decorate 40(uniform_medium) RelaxedPrecision
+                              Decorate 48(uniform_low) RelaxedPrecision
+                              Decorate 53(arg1) RelaxedPrecision
+                              Decorate 55(arg2) RelaxedPrecision
+                              Decorate 57(d) RelaxedPrecision
+                              Decorate 59(lowfin) RelaxedPrecision
+                              Decorate 61(mediumfin) RelaxedPrecision
+                              Decorate 73(mediumfout) RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -56,105 +56,105 @@ Linked fragment stage:
               21:             TypeVector 6(float) 4
               22:             TypePointer Input 21(fvec4)
      23(highfin):     22(ptr) Variable Input
-              28:    14(bool) ConstantFalse
-              29:    14(bool) ConstantTrue
-              30:   15(bvec2) ConstantComposite 28 29
-              34:             TypeInt 32 1
-              35:             TypePointer Function 34(int)
-              37:             TypePointer UniformConstant 34(int)
-38(uniform_medium):     37(ptr) Variable UniformConstant
-40(uniform_high):     37(ptr) Variable UniformConstant
- 46(uniform_low):     37(ptr) Variable UniformConstant
-              50:             TypePointer Function 6(float)
-              52:    6(float) Constant 1078774989
-              54:    6(float) Constant 1232730691
-              56:             TypePointer Input 6(float)
-      57(lowfin):     56(ptr) Variable Input
-   59(mediumfin):     56(ptr) Variable Input
-              62:             TypePointer Private 6(float)
-63(global_highp):     62(ptr) Variable Private
-              66:             TypePointer Function 21(fvec4)
-              70:             TypePointer Output 21(fvec4)
-  71(mediumfout):     70(ptr) Variable Output
-              80:     34(int) Constant 4
-              82:             TypeVector 34(int) 2
-              90:             TypeInt 32 0
-              91:     90(int) Constant 0
-             101:             TypePointer UniformConstant 15(bvec2)
-        102(ub2):    101(ptr) Variable UniformConstant
-             109:    6(float) Constant 1065353216
+              29:    14(bool) ConstantFalse
+              30:    14(bool) ConstantTrue
+              31:   15(bvec2) ConstantComposite 29 30
+              36:             TypeInt 32 1
+              37:             TypePointer Function 36(int)
+              39:             TypePointer UniformConstant 36(int)
+40(uniform_medium):     39(ptr) Variable UniformConstant
+42(uniform_high):     39(ptr) Variable UniformConstant
+ 48(uniform_low):     39(ptr) Variable UniformConstant
+              52:             TypePointer Function 6(float)
+              54:    6(float) Constant 1078774989
+              56:    6(float) Constant 1232730691
+              58:             TypePointer Input 6(float)
+      59(lowfin):     58(ptr) Variable Input
+   61(mediumfin):     58(ptr) Variable Input
+              64:             TypePointer Private 6(float)
+65(global_highp):     64(ptr) Variable Private
+              68:             TypePointer Function 21(fvec4)
+              72:             TypePointer Output 21(fvec4)
+  73(mediumfout):     72(ptr) Variable Output
+              82:     36(int) Constant 4
+              84:             TypeVector 36(int) 2
+              92:             TypeInt 32 0
+              93:     92(int) Constant 0
+             103:             TypePointer UniformConstant 15(bvec2)
+        104(ub2):    103(ptr) Variable UniformConstant
+             111:    6(float) Constant 1065353216
          4(main):           2 Function None 3
                5:             Label
-         36(sum):     35(ptr) Variable Function
-        51(arg1):     50(ptr) Variable Function
-        53(arg2):     50(ptr) Variable Function
-           55(d):     50(ptr) Variable Function
- 67(local_highp):     66(ptr) Variable Function
-      103(param):     16(ptr) Variable Function
-              39:     34(int) Load 38(uniform_medium)
-              41:     34(int) Load 40(uniform_high)
-              42:     34(int) IAdd 39 41
-                              Store 36(sum) 42
-              43:     34(int) Load 40(uniform_high)
-              44:     34(int) Load 36(sum)
-              45:     34(int) IAdd 44 43
-                              Store 36(sum) 45
-              47:     34(int) Load 46(uniform_low)
-              48:     34(int) Load 36(sum)
-              49:     34(int) IAdd 48 47
-                              Store 36(sum) 49
-                              Store 51(arg1) 52
-                              Store 53(arg2) 54
-              58:    6(float) Load 57(lowfin)
-              60:    6(float) Load 59(mediumfin)
-              61:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 58 60
-                              Store 55(d) 61
-              64:   21(fvec4) Load 23(highfin)
-              65:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 64
-                              Store 63(global_highp) 65
-              68:    6(float) Load 63(global_highp)
-              69:   21(fvec4) CompositeConstruct 68 68 68 68
-                              Store 67(local_highp) 69
-              72:    6(float) Load 55(d)
-              73:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 72
-              74:   21(fvec4) CompositeConstruct 73 73 73 73
-              75:    6(float) Load 53(arg2)
+         38(sum):     37(ptr) Variable Function
+        53(arg1):     52(ptr) Variable Function
+        55(arg2):     52(ptr) Variable Function
+           57(d):     52(ptr) Variable Function
+ 69(local_highp):     68(ptr) Variable Function
+      105(param):     16(ptr) Variable Function
+              41:     36(int) Load 40(uniform_medium)
+              43:     36(int) Load 42(uniform_high)
+              44:     36(int) IAdd 41 43
+                              Store 38(sum) 44
+              45:     36(int) Load 42(uniform_high)
+              46:     36(int) Load 38(sum)
+              47:     36(int) IAdd 46 45
+                              Store 38(sum) 47
+              49:     36(int) Load 48(uniform_low)
+              50:     36(int) Load 38(sum)
+              51:     36(int) IAdd 50 49
+                              Store 38(sum) 51
+                              Store 53(arg1) 54
+                              Store 55(arg2) 56
+              60:    6(float) Load 59(lowfin)
+              62:    6(float) Load 61(mediumfin)
+              63:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 60 62
+                              Store 57(d) 63
+              66:   21(fvec4) Load 23(highfin)
+              67:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 66
+                              Store 65(global_highp) 67
+              70:    6(float) Load 65(global_highp)
+              71:   21(fvec4) CompositeConstruct 70 70 70 70
+                              Store 69(local_highp) 71
+              74:    6(float) Load 57(d)
+              75:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 74
               76:   21(fvec4) CompositeConstruct 75 75 75 75
-              77:   21(fvec4) FAdd 74 76
-              78:   21(fvec4) Load 67(local_highp)
-              79:   21(fvec4) FAdd 77 78
-                              Store 71(mediumfout) 79
-              81:     34(int) Load 46(uniform_low)
-              83:   82(ivec2) CompositeConstruct 81 81
-              84:     34(int) Load 40(uniform_high)
-              85:   82(ivec2) CompositeConstruct 84 84
-              86:   82(ivec2) IMul 83 85
-              87:     34(int) Load 40(uniform_high)
-              88:   82(ivec2) CompositeConstruct 87 87
-              89:   82(ivec2) IAdd 86 88
-              92:     34(int) CompositeExtract 89 0
-              93:     34(int) IAdd 80 92
-              94:     34(int) Load 36(sum)
-              95:     34(int) IAdd 94 93
-                              Store 36(sum) 95
-              96:     34(int) Load 36(sum)
-              97:    6(float) ConvertSToF 96
-              98:   21(fvec4) CompositeConstruct 97 97 97 97
-              99:   21(fvec4) Load 71(mediumfout)
-             100:   21(fvec4) FAdd 99 98
-                              Store 71(mediumfout) 100
-             104:   15(bvec2) Load 102(ub2)
-                              Store 103(param) 104
-             105:    14(bool) FunctionCall 19(boolfun(vb2;) 103(param)
-                              SelectionMerge 107 None
-                              BranchConditional 105 106 107
-             106:               Label
-             108:   21(fvec4)   Load 71(mediumfout)
-             110:   21(fvec4)   CompositeConstruct 109 109 109 109
-             111:   21(fvec4)   FAdd 108 110
-                                Store 71(mediumfout) 111
-                                Branch 107
-             107:             Label
+              77:    6(float) Load 55(arg2)
+              78:   21(fvec4) CompositeConstruct 77 77 77 77
+              79:   21(fvec4) FAdd 76 78
+              80:   21(fvec4) Load 69(local_highp)
+              81:   21(fvec4) FAdd 79 80
+                              Store 73(mediumfout) 81
+              83:     36(int) Load 48(uniform_low)
+              85:   84(ivec2) CompositeConstruct 83 83
+              86:     36(int) Load 42(uniform_high)
+              87:   84(ivec2) CompositeConstruct 86 86
+              88:   84(ivec2) IMul 85 87
+              89:     36(int) Load 42(uniform_high)
+              90:   84(ivec2) CompositeConstruct 89 89
+              91:   84(ivec2) IAdd 88 90
+              94:     36(int) CompositeExtract 91 0
+              95:     36(int) IAdd 82 94
+              96:     36(int) Load 38(sum)
+              97:     36(int) IAdd 96 95
+                              Store 38(sum) 97
+              98:     36(int) Load 38(sum)
+              99:    6(float) ConvertSToF 98
+             100:   21(fvec4) CompositeConstruct 99 99 99 99
+             101:   21(fvec4) Load 73(mediumfout)
+             102:   21(fvec4) FAdd 101 100
+                              Store 73(mediumfout) 102
+             106:   15(bvec2) Load 104(ub2)
+                              Store 105(param) 106
+             107:    14(bool) FunctionCall 19(boolfun(vb2;) 105(param)
+                              SelectionMerge 109 None
+                              BranchConditional 107 108 109
+             108:               Label
+             110:   21(fvec4)   Load 73(mediumfout)
+             112:   21(fvec4)   CompositeConstruct 111 111 111 111
+             113:   21(fvec4)   FAdd 110 112
+                                Store 73(mediumfout) 113
+                                Branch 109
+             109:             Label
                               Return
                               FunctionEnd
     12(foo(vf3;):    9(fvec2) Function None 10
@@ -167,8 +167,8 @@ Linked fragment stage:
 19(boolfun(vb2;):    14(bool) Function None 17
          18(bv2):     16(ptr) FunctionParameter
               20:             Label
-              27:   15(bvec2) Load 18(bv2)
-              31:   15(bvec2) LogicalEqual 27 30
-              32:    14(bool) All 31
-                              ReturnValue 32
+              28:   15(bvec2) Load 18(bv2)
+              32:   15(bvec2) LogicalEqual 28 31
+              33:    14(bool) All 32
+                              ReturnValue 33
                               FunctionEnd
index bbe719f..008f970 100644 (file)
@@ -7,26 +7,26 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 143
+// Id's are bound by 144
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 12 23
+                              EntryPoint Fragment 4  "main" 12 24
                               ExecutionMode 4 OriginLowerLeft
                               Source GLSL 400
                               Name 4  "main"
                               Name 8  "foo("
                               Name 12  "of1"
-                              Name 23  "of4"
-                              Name 26  "ub"
-                              Name 30  "ui"
-                              Name 40  "uba"
-                              Name 109  "uf"
-                              Name 136  "uiv4"
-                              Name 138  "uv4"
-                              Name 141  "ub41"
-                              Name 142  "ub42"
+                              Name 24  "of4"
+                              Name 27  "ub"
+                              Name 31  "ui"
+                              Name 41  "uba"
+                              Name 110  "uf"
+                              Name 137  "uiv4"
+                              Name 139  "uv4"
+                              Name 142  "ub41"
+                              Name 143  "ub42"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeBool
@@ -36,190 +36,190 @@ Linked fragment stage:
          12(of1):     11(ptr) Variable Output
               14:   10(float) Constant 1065353216
               17:   10(float) Constant 1092616192
-              20:   10(float) Constant 0
-              21:             TypeVector 10(float) 4
-              22:             TypePointer Output 21(fvec4)
-         23(of4):     22(ptr) Variable Output
-              24:   21(fvec4) ConstantComposite 20 20 20 20
-              25:             TypePointer UniformConstant 6(bool)
-          26(ub):     25(ptr) Variable UniformConstant
-              28:             TypeInt 32 1
-              29:             TypePointer UniformConstant 28(int)
-          30(ui):     29(ptr) Variable UniformConstant
-              32:     28(int) Constant 2
-         40(uba):     25(ptr) Variable UniformConstant
-             108:             TypePointer UniformConstant 10(float)
-         109(uf):    108(ptr) Variable UniformConstant
-             112:   10(float) Constant 1082130432
-             134:             TypeVector 28(int) 4
-             135:             TypePointer UniformConstant 134(ivec4)
-       136(uiv4):    135(ptr) Variable UniformConstant
-             137:             TypePointer UniformConstant 21(fvec4)
-        138(uv4):    137(ptr) Variable UniformConstant
-             139:             TypeVector 6(bool) 4
-             140:             TypePointer UniformConstant 139(bvec4)
-       141(ub41):    140(ptr) Variable UniformConstant
-       142(ub42):    140(ptr) Variable UniformConstant
+              21:   10(float) Constant 0
+              22:             TypeVector 10(float) 4
+              23:             TypePointer Output 22(fvec4)
+         24(of4):     23(ptr) Variable Output
+              25:   22(fvec4) ConstantComposite 21 21 21 21
+              26:             TypePointer UniformConstant 6(bool)
+          27(ub):     26(ptr) Variable UniformConstant
+              29:             TypeInt 32 1
+              30:             TypePointer UniformConstant 29(int)
+          31(ui):     30(ptr) Variable UniformConstant
+              33:     29(int) Constant 2
+         41(uba):     26(ptr) Variable UniformConstant
+             109:             TypePointer UniformConstant 10(float)
+         110(uf):    109(ptr) Variable UniformConstant
+             113:   10(float) Constant 1082130432
+             135:             TypeVector 29(int) 4
+             136:             TypePointer UniformConstant 135(ivec4)
+       137(uiv4):    136(ptr) Variable UniformConstant
+             138:             TypePointer UniformConstant 22(fvec4)
+        139(uv4):    138(ptr) Variable UniformConstant
+             140:             TypeVector 6(bool) 4
+             141:             TypePointer UniformConstant 140(bvec4)
+       142(ub41):    141(ptr) Variable UniformConstant
+       143(ub42):    141(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-                              Store 12(of1) 20
-                              Store 23(of4) 24
-              27:     6(bool) Load 26(ub)
-              31:     28(int) Load 30(ui)
-              33:     6(bool) SGreaterThan 31 32
-              34:     6(bool) LogicalOr 27 33
-                              SelectionMerge 36 None
-                              BranchConditional 34 35 36
-              35:               Label
-              37:   10(float)   Load 12(of1)
-              38:   10(float)   FAdd 37 14
-                                Store 12(of1) 38
-                                Branch 36
-              36:             Label
-              39:     6(bool) Load 26(ub)
-              41:     6(bool) Load 40(uba)
-              42:     6(bool) LogicalNot 41
-              43:     6(bool) LogicalAnd 39 42
-                              SelectionMerge 45 None
-                              BranchConditional 43 44 45
-              44:               Label
-              46:   10(float)   Load 12(of1)
-              47:   10(float)   FAdd 46 14
-                                Store 12(of1) 47
-                                Branch 45
-              45:             Label
-              48:     6(bool) Load 26(ub)
-              49:     6(bool) LogicalNot 48
-                              SelectionMerge 51 None
-                              BranchConditional 49 50 51
-              50:               Label
-              52:     6(bool)   FunctionCall 8(foo()
-                                Branch 51
-              51:             Label
-              53:     6(bool) Phi 48 45 52 50
-                              SelectionMerge 55 None
-                              BranchConditional 53 54 55
-              54:               Label
-              56:   10(float)   Load 12(of1)
-              57:   10(float)   FAdd 56 14
-                                Store 12(of1) 57
-                                Branch 55
-              55:             Label
-              58:     6(bool) Load 26(ub)
-                              SelectionMerge 60 None
-                              BranchConditional 58 59 60
-              59:               Label
-              61:     6(bool)   FunctionCall 8(foo()
-                                Branch 60
-              60:             Label
-              62:     6(bool) Phi 58 55 61 59
-                              SelectionMerge 64 None
-                              BranchConditional 62 63 64
-              63:               Label
-              65:   10(float)   Load 12(of1)
-              66:   10(float)   FAdd 65 14
-                                Store 12(of1) 66
-                                Branch 64
-              64:             Label
-              67:     6(bool) FunctionCall 8(foo()
-              68:     6(bool) Load 26(ub)
-              69:     6(bool) LogicalOr 67 68
-                              SelectionMerge 71 None
-                              BranchConditional 69 70 71
-              70:               Label
-              72:   10(float)   Load 12(of1)
-              73:   10(float)   FAdd 72 14
-                                Store 12(of1) 73
-                                Branch 71
-              71:             Label
-              74:     6(bool) FunctionCall 8(foo()
-              75:     6(bool) Load 26(ub)
-              76:     6(bool) LogicalAnd 74 75
-                              SelectionMerge 78 None
-                              BranchConditional 76 77 78
-              77:               Label
-              79:   10(float)   Load 12(of1)
-              80:   10(float)   FAdd 79 14
-                                Store 12(of1) 80
-                                Branch 78
-              78:             Label
-              81:     6(bool) Load 26(ub)
-              82:     6(bool) LogicalNot 81
-                              SelectionMerge 84 None
-                              BranchConditional 82 83 84
-              83:               Label
-              85:   10(float)   Load 12(of1)
-              86:   10(float)   FAdd 85 14
-                                Store 12(of1) 86
-              87:     6(bool)   FOrdGreaterThan 86 14
-                                Branch 84
-              84:             Label
-              88:     6(bool) Phi 81 78 87 83
-                              SelectionMerge 90 None
-                              BranchConditional 88 89 90
-              89:               Label
-              91:   21(fvec4)   Load 23(of4)
-              92:   21(fvec4)   CompositeConstruct 14 14 14 14
-              93:   21(fvec4)   FAdd 91 92
-                                Store 23(of4) 93
-                                Branch 90
-              90:             Label
-              94:   10(float) Load 12(of1)
-              95:   10(float) FAdd 94 14
-                              Store 12(of1) 95
-              96:     6(bool) FOrdGreaterThan 95 14
-              97:     6(bool) Load 26(ub)
-              98:     6(bool) LogicalOr 96 97
-                              SelectionMerge 100 None
-                              BranchConditional 98 99 100
-              99:               Label
-             101:   21(fvec4)   Load 23(of4)
-             102:   21(fvec4)   CompositeConstruct 14 14 14 14
-             103:   21(fvec4)   FAdd 101 102
-                                Store 23(of4) 103
-                                Branch 100
-             100:             Label
-             104:     6(bool) Load 26(ub)
-             105:     6(bool) LogicalNot 104
-                              SelectionMerge 107 None
-                              BranchConditional 105 106 107
-             106:               Label
-             110:   10(float)   Load 109(uf)
-             111:   10(float)   ExtInst 1(GLSL.std.450) 13(Sin) 110
-             113:   10(float)   FMul 111 112
-             114:   10(float)   Load 12(of1)
-             115:     6(bool)   FOrdGreaterThan 113 114
-                                Branch 107
-             107:             Label
-             116:     6(bool) Phi 104 100 115 106
-                              SelectionMerge 118 None
-                              BranchConditional 116 117 118
-             117:               Label
-             119:   10(float)   Load 12(of1)
-             120:   10(float)   FAdd 119 14
-                                Store 12(of1) 120
-                                Branch 118
-             118:             Label
-             121:     6(bool) Load 26(ub)
-                              SelectionMerge 123 None
-                              BranchConditional 121 122 123
-             122:               Label
-             124:   10(float)   Load 109(uf)
-             125:   10(float)   ExtInst 1(GLSL.std.450) 13(Sin) 124
-             126:   10(float)   FMul 125 112
-             127:   10(float)   Load 12(of1)
-             128:     6(bool)   FOrdGreaterThan 126 127
-                                Branch 123
-             123:             Label
-             129:     6(bool) Phi 121 118 128 122
-                              SelectionMerge 131 None
-                              BranchConditional 129 130 131
-             130:               Label
-             132:   10(float)   Load 12(of1)
-             133:   10(float)   FAdd 132 14
-                                Store 12(of1) 133
-                                Branch 131
-             131:             Label
+                              Store 12(of1) 21
+                              Store 24(of4) 25
+              28:     6(bool) Load 27(ub)
+              32:     29(int) Load 31(ui)
+              34:     6(bool) SGreaterThan 32 33
+              35:     6(bool) LogicalOr 28 34
+                              SelectionMerge 37 None
+                              BranchConditional 35 36 37
+              36:               Label
+              38:   10(float)   Load 12(of1)
+              39:   10(float)   FAdd 38 14
+                                Store 12(of1) 39
+                                Branch 37
+              37:             Label
+              40:     6(bool) Load 27(ub)
+              42:     6(bool) Load 41(uba)
+              43:     6(bool) LogicalNot 42
+              44:     6(bool) LogicalAnd 40 43
+                              SelectionMerge 46 None
+                              BranchConditional 44 45 46
+              45:               Label
+              47:   10(float)   Load 12(of1)
+              48:   10(float)   FAdd 47 14
+                                Store 12(of1) 48
+                                Branch 46
+              46:             Label
+              49:     6(bool) Load 27(ub)
+              50:     6(bool) LogicalNot 49
+                              SelectionMerge 52 None
+                              BranchConditional 50 51 52
+              51:               Label
+              53:     6(bool)   FunctionCall 8(foo()
+                                Branch 52
+              52:             Label
+              54:     6(bool) Phi 49 46 53 51
+                              SelectionMerge 56 None
+                              BranchConditional 54 55 56
+              55:               Label
+              57:   10(float)   Load 12(of1)
+              58:   10(float)   FAdd 57 14
+                                Store 12(of1) 58
+                                Branch 56
+              56:             Label
+              59:     6(bool) Load 27(ub)
+                              SelectionMerge 61 None
+                              BranchConditional 59 60 61
+              60:               Label
+              62:     6(bool)   FunctionCall 8(foo()
+                                Branch 61
+              61:             Label
+              63:     6(bool) Phi 59 56 62 60
+                              SelectionMerge 65 None
+                              BranchConditional 63 64 65
+              64:               Label
+              66:   10(float)   Load 12(of1)
+              67:   10(float)   FAdd 66 14
+                                Store 12(of1) 67
+                                Branch 65
+              65:             Label
+              68:     6(bool) FunctionCall 8(foo()
+              69:     6(bool) Load 27(ub)
+              70:     6(bool) LogicalOr 68 69
+                              SelectionMerge 72 None
+                              BranchConditional 70 71 72
+              71:               Label
+              73:   10(float)   Load 12(of1)
+              74:   10(float)   FAdd 73 14
+                                Store 12(of1) 74
+                                Branch 72
+              72:             Label
+              75:     6(bool) FunctionCall 8(foo()
+              76:     6(bool) Load 27(ub)
+              77:     6(bool) LogicalAnd 75 76
+                              SelectionMerge 79 None
+                              BranchConditional 77 78 79
+              78:               Label
+              80:   10(float)   Load 12(of1)
+              81:   10(float)   FAdd 80 14
+                                Store 12(of1) 81
+                                Branch 79
+              79:             Label
+              82:     6(bool) Load 27(ub)
+              83:     6(bool) LogicalNot 82
+                              SelectionMerge 85 None
+                              BranchConditional 83 84 85
+              84:               Label
+              86:   10(float)   Load 12(of1)
+              87:   10(float)   FAdd 86 14
+                                Store 12(of1) 87
+              88:     6(bool)   FOrdGreaterThan 87 14
+                                Branch 85
+              85:             Label
+              89:     6(bool) Phi 82 79 88 84
+                              SelectionMerge 91 None
+                              BranchConditional 89 90 91
+              90:               Label
+              92:   22(fvec4)   Load 24(of4)
+              93:   22(fvec4)   CompositeConstruct 14 14 14 14
+              94:   22(fvec4)   FAdd 92 93
+                                Store 24(of4) 94
+                                Branch 91
+              91:             Label
+              95:   10(float) Load 12(of1)
+              96:   10(float) FAdd 95 14
+                              Store 12(of1) 96
+              97:     6(bool) FOrdGreaterThan 96 14
+              98:     6(bool) Load 27(ub)
+              99:     6(bool) LogicalOr 97 98
+                              SelectionMerge 101 None
+                              BranchConditional 99 100 101
+             100:               Label
+             102:   22(fvec4)   Load 24(of4)
+             103:   22(fvec4)   CompositeConstruct 14 14 14 14
+             104:   22(fvec4)   FAdd 102 103
+                                Store 24(of4) 104
+                                Branch 101
+             101:             Label
+             105:     6(bool) Load 27(ub)
+             106:     6(bool) LogicalNot 105
+                              SelectionMerge 108 None
+                              BranchConditional 106 107 108
+             107:               Label
+             111:   10(float)   Load 110(uf)
+             112:   10(float)   ExtInst 1(GLSL.std.450) 13(Sin) 111
+             114:   10(float)   FMul 112 113
+             115:   10(float)   Load 12(of1)
+             116:     6(bool)   FOrdGreaterThan 114 115
+                                Branch 108
+             108:             Label
+             117:     6(bool) Phi 105 101 116 107
+                              SelectionMerge 119 None
+                              BranchConditional 117 118 119
+             118:               Label
+             120:   10(float)   Load 12(of1)
+             121:   10(float)   FAdd 120 14
+                                Store 12(of1) 121
+                                Branch 119
+             119:             Label
+             122:     6(bool) Load 27(ub)
+                              SelectionMerge 124 None
+                              BranchConditional 122 123 124
+             123:               Label
+             125:   10(float)   Load 110(uf)
+             126:   10(float)   ExtInst 1(GLSL.std.450) 13(Sin) 125
+             127:   10(float)   FMul 126 113
+             128:   10(float)   Load 12(of1)
+             129:     6(bool)   FOrdGreaterThan 127 128
+                                Branch 124
+             124:             Label
+             130:     6(bool) Phi 122 119 129 123
+                              SelectionMerge 132 None
+                              BranchConditional 130 131 132
+             131:               Label
+             133:   10(float)   Load 12(of1)
+             134:   10(float)   FAdd 133 14
+                                Store 12(of1) 134
+                                Branch 132
+             132:             Label
                               Return
                               FunctionEnd
          8(foo():     6(bool) Function None 7
index 1a41f6a..34bdae0 100755 (executable)
@@ -7,20 +7,20 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 22
+// Id's are bound by 23
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 12 16
+                              EntryPoint Fragment 4  "main" 12 17
                               ExecutionMode 4 OriginLowerLeft
                               Source GLSL 150
                               Name 4  "main"
                               Name 9  "foo("
                               Name 12  "BaseColor"
-                              Name 16  "gl_FragColor"
-                              Name 19  "bigColor"
-                              Name 21  "d"
+                              Name 17  "gl_FragColor"
+                              Name 20  "bigColor"
+                              Name 22  "d"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -28,16 +28,16 @@ Linked fragment stage:
                8:             TypeFunction 7(fvec4)
               11:             TypePointer Input 7(fvec4)
    12(BaseColor):     11(ptr) Variable Input
-              15:             TypePointer Output 7(fvec4)
-16(gl_FragColor):     15(ptr) Variable Output
-              18:             TypePointer UniformConstant 7(fvec4)
-    19(bigColor):     18(ptr) Variable UniformConstant
-              20:             TypePointer UniformConstant 6(float)
-           21(d):     20(ptr) Variable UniformConstant
+              16:             TypePointer Output 7(fvec4)
+17(gl_FragColor):     16(ptr) Variable Output
+              19:             TypePointer UniformConstant 7(fvec4)
+    20(bigColor):     19(ptr) Variable UniformConstant
+              21:             TypePointer UniformConstant 6(float)
+           22(d):     21(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-              17:    7(fvec4) FunctionCall 9(foo()
-                              Store 16(gl_FragColor) 17
+              18:    7(fvec4) FunctionCall 9(foo()
+                              Store 17(gl_FragColor) 18
                               Return
                               FunctionEnd
          9(foo():    7(fvec4) Function None 8
index ecee930..efd2df0 100755 (executable)
@@ -10,12 +10,12 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 265
+// Id's are bound by 267
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 73 223
+                              EntryPoint Fragment 4  "main" 75 225
                               ExecutionMode 4 OriginLowerLeft
                               Source ESSL 310
                               Name 4  "main"
@@ -27,30 +27,30 @@ Linked fragment stage:
                               Name 17  "v1"
                               Name 18  "v2"
                               Name 19  "i1"
-                              Name 58  "local"
-                              Name 60  "c"
-                              Name 71  "f"
-                              Name 73  "x"
-                              Name 127  "d"
-                              Name 153  "i"
-                              Name 172  "j"
-                              Name 223  "color"
-                              Name 229  "v"
-                              Name 230  "param"
+                              Name 60  "local"
+                              Name 62  "c"
+                              Name 73  "f"
+                              Name 75  "x"
+                              Name 129  "d"
+                              Name 155  "i"
+                              Name 174  "j"
+                              Name 225  "color"
+                              Name 231  "v"
                               Name 232  "param"
                               Name 234  "param"
-                              Name 242  "param"
+                              Name 236  "param"
                               Name 244  "param"
                               Name 246  "param"
-                              Decorate 58(local) RelaxedPrecision
-                              Decorate 60(c) RelaxedPrecision
-                              Decorate 71(f) RelaxedPrecision
-                              Decorate 73(x) RelaxedPrecision
-                              Decorate 127(d) RelaxedPrecision
-                              Decorate 153(i) RelaxedPrecision
-                              Decorate 172(j) RelaxedPrecision
-                              Decorate 223(color) RelaxedPrecision
-                              Decorate 229(v) RelaxedPrecision
+                              Name 248  "param"
+                              Decorate 60(local) RelaxedPrecision
+                              Decorate 62(c) RelaxedPrecision
+                              Decorate 73(f) RelaxedPrecision
+                              Decorate 75(x) RelaxedPrecision
+                              Decorate 129(d) RelaxedPrecision
+                              Decorate 155(i) RelaxedPrecision
+                              Decorate 174(j) RelaxedPrecision
+                              Decorate 225(color) RelaxedPrecision
+                              Decorate 231(v) RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -61,291 +61,291 @@ Linked fragment stage:
               11:             TypeFunction 7(fvec4) 8(ptr) 8(ptr) 10(ptr)
               36:    6(float) Constant 0
               37:    7(fvec4) ConstantComposite 36 36 36 36
-              47:    6(float) Constant 1065353216
-              48:    7(fvec4) ConstantComposite 47 47 47 47
-              59:             TypePointer UniformConstant 9(int)
-           60(c):     59(ptr) Variable UniformConstant
-              63:      9(int) Constant 1
-              70:             TypePointer Function 6(float)
-              72:             TypePointer Input 6(float)
-           73(x):     72(ptr) Variable Input
-          127(d):     59(ptr) Variable UniformConstant
-             154:      9(int) Constant 0
-             160:      9(int) Constant 10
-             161:             TypeBool
-             173:      9(int) Constant 20
-             179:      9(int) Constant 30
-             184:    6(float) Constant 1120429670
-             204:    6(float) Constant 1079739679
-             222:             TypePointer Output 6(float)
-      223(color):    222(ptr) Variable Output
-             228:             TypePointer UniformConstant 7(fvec4)
-          229(v):    228(ptr) Variable UniformConstant
-             237:             TypeInt 32 0
-             238:    237(int) Constant 1
-             249:    237(int) Constant 2
+              48:    6(float) Constant 1065353216
+              49:    7(fvec4) ConstantComposite 48 48 48 48
+              61:             TypePointer UniformConstant 9(int)
+           62(c):     61(ptr) Variable UniformConstant
+              65:      9(int) Constant 1
+              72:             TypePointer Function 6(float)
+              74:             TypePointer Input 6(float)
+           75(x):     74(ptr) Variable Input
+          129(d):     61(ptr) Variable UniformConstant
+             156:      9(int) Constant 0
+             162:      9(int) Constant 10
+             163:             TypeBool
+             175:      9(int) Constant 20
+             181:      9(int) Constant 30
+             186:    6(float) Constant 1120429670
+             206:    6(float) Constant 1079739679
+             224:             TypePointer Output 6(float)
+      225(color):    224(ptr) Variable Output
+             230:             TypePointer UniformConstant 7(fvec4)
+          231(v):    230(ptr) Variable UniformConstant
+             239:             TypeInt 32 0
+             240:    239(int) Constant 1
+             251:    239(int) Constant 2
          4(main):           2 Function None 3
                5:             Label
-       58(local):     10(ptr) Variable Function
-           71(f):     70(ptr) Variable Function
-          153(i):     10(ptr) Variable Function
-          172(j):     10(ptr) Variable Function
-      230(param):      8(ptr) Variable Function
+       60(local):     10(ptr) Variable Function
+           73(f):     72(ptr) Variable Function
+          155(i):     10(ptr) Variable Function
+          174(j):     10(ptr) Variable Function
       232(param):      8(ptr) Variable Function
-      234(param):     10(ptr) Variable Function
-      242(param):      8(ptr) Variable Function
+      234(param):      8(ptr) Variable Function
+      236(param):     10(ptr) Variable Function
       244(param):      8(ptr) Variable Function
-      246(param):     10(ptr) Variable Function
-              61:      9(int) Load 60(c)
-                              Store 58(local) 61
-              62:      9(int) Load 58(local)
-              64:      9(int) IAdd 62 63
-                              Store 58(local) 64
-              65:      9(int) Load 60(c)
-                              SelectionMerge 69 None
-                              Switch 65 68 
-                                     case 1: 66
-                                     case 2: 67
+      246(param):      8(ptr) Variable Function
+      248(param):     10(ptr) Variable Function
+              63:      9(int) Load 62(c)
+                              Store 60(local) 63
+              64:      9(int) Load 60(local)
+              66:      9(int) IAdd 64 65
+                              Store 60(local) 66
+              67:      9(int) Load 62(c)
+                              SelectionMerge 71 None
+                              Switch 67 70 
+                                     case 1: 68
+                                     case 2: 69
+              70:               Label
+              82:    6(float)   Load 75(x)
+              83:    6(float)   ExtInst 1(GLSL.std.450) 15(Tan) 82
+                                Store 73(f) 83
+                                Branch 71
               68:               Label
-              80:    6(float)   Load 73(x)
-              81:    6(float)   ExtInst 1(GLSL.std.450) 15(Tan) 80
-                                Store 71(f) 81
-                                Branch 69
-              66:               Label
-              74:    6(float)   Load 73(x)
-              75:    6(float)   ExtInst 1(GLSL.std.450) 13(Sin) 74
-                                Store 71(f) 75
-                                Branch 69
-              67:               Label
-              77:    6(float)   Load 73(x)
-              78:    6(float)   ExtInst 1(GLSL.std.450) 14(Cos) 77
-                                Store 71(f) 78
-                                Branch 69
-              69:             Label
-              83:      9(int) Load 60(c)
-                              SelectionMerge 87 None
-                              Switch 83 86 
-                                     case 1: 84
-                                     case 2: 85
+              76:    6(float)   Load 75(x)
+              77:    6(float)   ExtInst 1(GLSL.std.450) 13(Sin) 76
+                                Store 73(f) 77
+                                Branch 71
+              69:               Label
+              79:    6(float)   Load 75(x)
+              80:    6(float)   ExtInst 1(GLSL.std.450) 14(Cos) 79
+                                Store 73(f) 80
+                                Branch 71
+              71:             Label
+              85:      9(int) Load 62(c)
+                              SelectionMerge 89 None
+                              Switch 85 88 
+                                     case 1: 86
+                                     case 2: 87
+              88:               Label
+              99:    6(float)   Load 75(x)
+             100:    6(float)   ExtInst 1(GLSL.std.450) 15(Tan) 99
+             101:    6(float)   Load 73(f)
+             102:    6(float)   FAdd 101 100
+                                Store 73(f) 102
+                                Branch 89
               86:               Label
-              97:    6(float)   Load 73(x)
-              98:    6(float)   ExtInst 1(GLSL.std.450) 15(Tan) 97
-              99:    6(float)   Load 71(f)
-             100:    6(float)   FAdd 99 98
-                                Store 71(f) 100
+              90:    6(float)   Load 75(x)
+              91:    6(float)   ExtInst 1(GLSL.std.450) 13(Sin) 90
+              92:    6(float)   Load 73(f)
+              93:    6(float)   FAdd 92 91
+                                Store 73(f) 93
                                 Branch 87
-              84:               Label
-              88:    6(float)   Load 73(x)
-              89:    6(float)   ExtInst 1(GLSL.std.450) 13(Sin) 88
-              90:    6(float)   Load 71(f)
-              91:    6(float)   FAdd 90 89
-                                Store 71(f) 91
-                                Branch 85
-              85:               Label
-              92:    6(float)   Load 73(x)
-              93:    6(float)   ExtInst 1(GLSL.std.450) 14(Cos) 92
-              94:    6(float)   Load 71(f)
-              95:    6(float)   FAdd 94 93
-                                Store 71(f) 95
-                                Branch 87
-              87:             Label
-             102:      9(int) Load 60(c)
-                              SelectionMerge 105 None
-                              Switch 102 105 
-                                     case 1: 103
-                                     case 2: 104
-             103:               Label
-             106:    6(float)   Load 73(x)
-             107:    6(float)   ExtInst 1(GLSL.std.450) 13(Sin) 106
-             108:    6(float)   Load 71(f)
-             109:    6(float)   FAdd 108 107
-                                Store 71(f) 109
-                                Branch 105
-             104:               Label
-             111:    6(float)   Load 73(x)
-             112:    6(float)   ExtInst 1(GLSL.std.450) 14(Cos) 111
-             113:    6(float)   Load 71(f)
-             114:    6(float)   FAdd 113 112
-                                Store 71(f) 114
-                                Branch 105
-             105:             Label
-             117:      9(int) Load 60(c)
-                              SelectionMerge 121 None
-                              Switch 117 120 
-                                     case 1: 118
-                                     case 2: 119
+              87:               Label
+              94:    6(float)   Load 75(x)
+              95:    6(float)   ExtInst 1(GLSL.std.450) 14(Cos) 94
+              96:    6(float)   Load 73(f)
+              97:    6(float)   FAdd 96 95
+                                Store 73(f) 97
+                                Branch 89
+              89:             Label
+             104:      9(int) Load 62(c)
+                              SelectionMerge 107 None
+                              Switch 104 107 
+                                     case 1: 105
+                                     case 2: 106
+             105:               Label
+             108:    6(float)   Load 75(x)
+             109:    6(float)   ExtInst 1(GLSL.std.450) 13(Sin) 108
+             110:    6(float)   Load 73(f)
+             111:    6(float)   FAdd 110 109
+                                Store 73(f) 111
+                                Branch 107
+             106:               Label
+             113:    6(float)   Load 75(x)
+             114:    6(float)   ExtInst 1(GLSL.std.450) 14(Cos) 113
+             115:    6(float)   Load 73(f)
+             116:    6(float)   FAdd 115 114
+                                Store 73(f) 116
+                                Branch 107
+             107:             Label
+             119:      9(int) Load 62(c)
+                              SelectionMerge 123 None
+                              Switch 119 122 
+                                     case 1: 120
+                                     case 2: 121
+             122:               Label
+             150:    6(float)   Load 75(x)
+             151:    6(float)   ExtInst 1(GLSL.std.450) 15(Tan) 150
+             152:    6(float)   Load 73(f)
+             153:    6(float)   FAdd 152 151
+                                Store 73(f) 153
+                                Branch 123
              120:               Label
-             148:    6(float)   Load 73(x)
-             149:    6(float)   ExtInst 1(GLSL.std.450) 15(Tan) 148
-             150:    6(float)   Load 71(f)
-             151:    6(float)   FAdd 150 149
-                                Store 71(f) 151
-                                Branch 121
-             118:               Label
-             122:    6(float)   Load 73(x)
-             123:    6(float)   ExtInst 1(GLSL.std.450) 13(Sin) 122
-             124:    6(float)   Load 71(f)
-             125:    6(float)   FAdd 124 123
-                                Store 71(f) 125
-                                Branch 121
-             119:               Label
-             128:      9(int)   Load 127(d)
-                                SelectionMerge 131 None
-                                Switch 128 131 
-                                       case 1: 129
-                                       case 2: 130
-             129:                 Label
-             132:    6(float)     Load 73(x)
-             133:    6(float)     Load 73(x)
-             134:    6(float)     FMul 132 133
-             135:    6(float)     Load 73(x)
+             124:    6(float)   Load 75(x)
+             125:    6(float)   ExtInst 1(GLSL.std.450) 13(Sin) 124
+             126:    6(float)   Load 73(f)
+             127:    6(float)   FAdd 126 125
+                                Store 73(f) 127
+                                Branch 123
+             121:               Label
+             130:      9(int)   Load 129(d)
+                                SelectionMerge 133 None
+                                Switch 130 133 
+                                       case 1: 131
+                                       case 2: 132
+             131:                 Label
+             134:    6(float)     Load 75(x)
+             135:    6(float)     Load 75(x)
              136:    6(float)     FMul 134 135
-             137:    6(float)     Load 71(f)
-             138:    6(float)     FAdd 137 136
-                                  Store 71(f) 138
-                                  Branch 131
-             130:                 Label
-             140:    6(float)     Load 73(x)
-             141:    6(float)     Load 73(x)
-             142:    6(float)     FMul 140 141
-             143:    6(float)     Load 71(f)
-             144:    6(float)     FAdd 143 142
-                                  Store 71(f) 144
-                                  Branch 131
-             131:               Label
-                                Branch 121
-             121:             Label
-                              Store 153(i) 154
-                              Branch 155
-             155:             Label
-             159:      9(int) Load 153(i)
-             162:   161(bool) SLessThan 159 160
-                              LoopMerge 157 158 None
-                              BranchConditional 162 156 157
-             156:               Label
-             163:      9(int)   Load 60(c)
-                                SelectionMerge 167 None
-                                Switch 163 166 
-                                       case 1: 164
-                                       case 2: 165
+             137:    6(float)     Load 75(x)
+             138:    6(float)     FMul 136 137
+             139:    6(float)     Load 73(f)
+             140:    6(float)     FAdd 139 138
+                                  Store 73(f) 140
+                                  Branch 133
+             132:                 Label
+             142:    6(float)     Load 75(x)
+             143:    6(float)     Load 75(x)
+             144:    6(float)     FMul 142 143
+             145:    6(float)     Load 73(f)
+             146:    6(float)     FAdd 145 144
+                                  Store 73(f) 146
+                                  Branch 133
+             133:               Label
+                                Branch 123
+             123:             Label
+                              Store 155(i) 156
+                              Branch 157
+             157:             Label
+             161:      9(int) Load 155(i)
+             164:   163(bool) SLessThan 161 162
+                              LoopMerge 159 160 None
+                              BranchConditional 164 158 159
+             158:               Label
+             165:      9(int)   Load 62(c)
+                                SelectionMerge 169 None
+                                Switch 165 168 
+                                       case 1: 166
+                                       case 2: 167
+             168:                 Label
+             200:    6(float)     Load 75(x)
+             201:    6(float)     ExtInst 1(GLSL.std.450) 15(Tan) 200
+             202:    6(float)     Load 73(f)
+             203:    6(float)     FAdd 202 201
+                                  Store 73(f) 203
+                                  Branch 169
              166:                 Label
-             198:    6(float)     Load 73(x)
-             199:    6(float)     ExtInst 1(GLSL.std.450) 15(Tan) 198
-             200:    6(float)     Load 71(f)
-             201:    6(float)     FAdd 200 199
-                                  Store 71(f) 201
-                                  Branch 167
-             164:                 Label
-             168:    6(float)     Load 73(x)
-             169:    6(float)     ExtInst 1(GLSL.std.450) 13(Sin) 168
-             170:    6(float)     Load 71(f)
-             171:    6(float)     FAdd 170 169
-                                  Store 71(f) 171
-                                  Store 172(j) 173
-                                  Branch 174
-             174:                 Label
-             178:      9(int)     Load 172(j)
-             180:   161(bool)     SLessThan 178 179
-                                  LoopMerge 176 177 None
-                                  BranchConditional 180 175 176
-             175:                   Label
-             181:    6(float)       Load 71(f)
-             182:    6(float)       FAdd 181 47
-                                    Store 71(f) 182
-             183:    6(float)       Load 71(f)
-             185:   161(bool)       FOrdLessThan 183 184
-                                    SelectionMerge 187 None
-                                    BranchConditional 185 186 187
-             186:                     Label
-                                      Branch 176
-             187:                   Label
-                                    Branch 177
-             177:                   Label
-             189:      9(int)       Load 172(j)
-             190:      9(int)       IAdd 189 63
-                                    Store 172(j) 190
-                                    Branch 174
+             170:    6(float)     Load 75(x)
+             171:    6(float)     ExtInst 1(GLSL.std.450) 13(Sin) 170
+             172:    6(float)     Load 73(f)
+             173:    6(float)     FAdd 172 171
+                                  Store 73(f) 173
+                                  Store 174(j) 175
+                                  Branch 176
              176:                 Label
-                                  Branch 167
-             165:                 Label
-             192:    6(float)     Load 73(x)
-             193:    6(float)     ExtInst 1(GLSL.std.450) 14(Cos) 192
-             194:    6(float)     Load 71(f)
-             195:    6(float)     FAdd 194 193
-                                  Store 71(f) 195
-                                  Branch 167
-             167:               Label
-             203:    6(float)   Load 71(f)
-             205:   161(bool)   FOrdLessThan 203 204
-                                SelectionMerge 207 None
-                                BranchConditional 205 206 207
-             206:                 Label
-                                  Branch 157
-             207:               Label
-                                Branch 158
-             158:               Label
-             209:      9(int)   Load 153(i)
-             210:      9(int)   IAdd 209 63
-                                Store 153(i) 210
-                                Branch 155
-             157:             Label
-             211:      9(int) Load 60(c)
-                              SelectionMerge 214 None
-                              Switch 211 214 
-                                     case 1: 212
-                                     case 2: 213
-             212:               Label
-             215:    6(float)   Load 73(x)
-             216:    6(float)   ExtInst 1(GLSL.std.450) 13(Sin) 215
-             217:    6(float)   Load 71(f)
-             218:    6(float)   FAdd 217 216
-                                Store 71(f) 218
-                                Branch 214
-             213:               Label
-                                Branch 214
-             214:             Label
-             224:    6(float) Load 71(f)
-             225:      9(int) Load 58(local)
-             226:    6(float) ConvertSToF 225
-             227:    6(float) FAdd 224 226
-                              Store 223(color) 227
-             231:    7(fvec4) Load 229(v)
-                              Store 230(param) 231
-             233:    7(fvec4) Load 229(v)
+             180:      9(int)     Load 174(j)
+             182:   163(bool)     SLessThan 180 181
+                                  LoopMerge 178 179 None
+                                  BranchConditional 182 177 178
+             177:                   Label
+             183:    6(float)       Load 73(f)
+             184:    6(float)       FAdd 183 48
+                                    Store 73(f) 184
+             185:    6(float)       Load 73(f)
+             187:   163(bool)       FOrdLessThan 185 186
+                                    SelectionMerge 189 None
+                                    BranchConditional 187 188 189
+             188:                     Label
+                                      Branch 178
+             189:                   Label
+                                    Branch 179
+             179:                   Label
+             191:      9(int)       Load 174(j)
+             192:      9(int)       IAdd 191 65
+                                    Store 174(j) 192
+                                    Branch 176
+             178:                 Label
+                                  Branch 169
+             167:                 Label
+             194:    6(float)     Load 75(x)
+             195:    6(float)     ExtInst 1(GLSL.std.450) 14(Cos) 194
+             196:    6(float)     Load 73(f)
+             197:    6(float)     FAdd 196 195
+                                  Store 73(f) 197
+                                  Branch 169
+             169:               Label
+             205:    6(float)   Load 73(f)
+             207:   163(bool)   FOrdLessThan 205 206
+                                SelectionMerge 209 None
+                                BranchConditional 207 208 209
+             208:                 Label
+                                  Branch 159
+             209:               Label
+                                Branch 160
+             160:               Label
+             211:      9(int)   Load 155(i)
+             212:      9(int)   IAdd 211 65
+                                Store 155(i) 212
+                                Branch 157
+             159:             Label
+             213:      9(int) Load 62(c)
+                              SelectionMerge 216 None
+                              Switch 213 216 
+                                     case 1: 214
+                                     case 2: 215
+             214:               Label
+             217:    6(float)   Load 75(x)
+             218:    6(float)   ExtInst 1(GLSL.std.450) 13(Sin) 217
+             219:    6(float)   Load 73(f)
+             220:    6(float)   FAdd 219 218
+                                Store 73(f) 220
+                                Branch 216
+             215:               Label
+                                Branch 216
+             216:             Label
+             226:    6(float) Load 73(f)
+             227:      9(int) Load 60(local)
+             228:    6(float) ConvertSToF 227
+             229:    6(float) FAdd 226 228
+                              Store 225(color) 229
+             233:    7(fvec4) Load 231(v)
                               Store 232(param) 233
-             235:      9(int) Load 60(c)
+             235:    7(fvec4) Load 231(v)
                               Store 234(param) 235
-             236:    7(fvec4) FunctionCall 15(foo1(vf4;vf4;i1;) 230(param) 232(param) 234(param)
-             239:    6(float) CompositeExtract 236 1
-             240:    6(float) Load 223(color)
-             241:    6(float) FAdd 240 239
-                              Store 223(color) 241
-             243:    7(fvec4) Load 229(v)
-                              Store 242(param) 243
-             245:    7(fvec4) Load 229(v)
+             237:      9(int) Load 62(c)
+                              Store 236(param) 237
+             238:    7(fvec4) FunctionCall 15(foo1(vf4;vf4;i1;) 232(param) 234(param) 236(param)
+             241:    6(float) CompositeExtract 238 1
+             242:    6(float) Load 225(color)
+             243:    6(float) FAdd 242 241
+                              Store 225(color) 243
+             245:    7(fvec4) Load 231(v)
                               Store 244(param) 245
-             247:      9(int) Load 60(c)
+             247:    7(fvec4) Load 231(v)
                               Store 246(param) 247
-             248:    7(fvec4) FunctionCall 20(foo2(vf4;vf4;i1;) 242(param) 244(param) 246(param)
-             250:    6(float) CompositeExtract 248 2
-             251:    6(float) Load 223(color)
-             252:    6(float) FAdd 251 250
-                              Store 223(color) 252
-             253:      9(int) Load 60(c)
-                              SelectionMerge 256 None
-                              Switch 253 255 
-                                     case 0: 254
-             255:               Label
-                                Branch 256
-             254:               Label
-                                Branch 256
-             256:             Label
-             260:      9(int) Load 60(c)
-                              SelectionMerge 262 None
-                              Switch 260 261
-             261:               Label
-                                Branch 262
-             262:             Label
+             249:      9(int) Load 62(c)
+                              Store 248(param) 249
+             250:    7(fvec4) FunctionCall 20(foo2(vf4;vf4;i1;) 244(param) 246(param) 248(param)
+             252:    6(float) CompositeExtract 250 2
+             253:    6(float) Load 225(color)
+             254:    6(float) FAdd 253 252
+                              Store 225(color) 254
+             255:      9(int) Load 62(c)
+                              SelectionMerge 258 None
+                              Switch 255 257 
+                                     case 0: 256
+             257:               Label
+                                Branch 258
+             256:               Label
+                                Branch 258
+             258:             Label
+             262:      9(int) Load 62(c)
+                              SelectionMerge 264 None
+                              Switch 262 263
+             263:               Label
+                                Branch 264
+             264:             Label
                               Return
                               FunctionEnd
 15(foo1(vf4;vf4;i1;):    7(fvec4) Function None 11
@@ -379,26 +379,26 @@ Linked fragment stage:
           18(v2):      8(ptr) FunctionParameter
           19(i1):     10(ptr) FunctionParameter
               21:             Label
-              39:      9(int) Load 19(i1)
-                              SelectionMerge 44 None
-                              Switch 39 44 
-                                     case 0: 40
-                                     case 2: 41
-                                     case 1: 42
-                                     case 3: 43
-              40:               Label
-              45:    7(fvec4)   Load 17(v1)
-                                ReturnValue 45
+              40:      9(int) Load 19(i1)
+                              SelectionMerge 45 None
+                              Switch 40 45 
+                                     case 0: 41
+                                     case 2: 42
+                                     case 1: 43
+                                     case 3: 44
               41:               Label
-                                ReturnValue 48
+              46:    7(fvec4)   Load 17(v1)
+                                ReturnValue 46
               42:               Label
-              50:    7(fvec4)   Load 18(v2)
-                                ReturnValue 50
+                                ReturnValue 49
               43:               Label
-              52:    7(fvec4)   Load 17(v1)
-              53:    7(fvec4)   Load 18(v2)
-              54:    7(fvec4)   FMul 52 53
-                                ReturnValue 54
-              44:             Label
+              51:    7(fvec4)   Load 18(v2)
+                                ReturnValue 51
+              44:               Label
+              53:    7(fvec4)   Load 17(v1)
+              54:    7(fvec4)   Load 18(v2)
+              55:    7(fvec4)   FMul 53 54
+                                ReturnValue 55
+              45:             Label
                               ReturnValue 37
                               FunctionEnd