WIP: HLSL: Treat HLSL rows as GLSL columns.
authorsteve-lunarg <steve_gh@khasekhemwy.net>
Wed, 24 Aug 2016 20:36:13 +0000 (14:36 -0600)
committersteve-lunarg <steve_gh@khasekhemwy.net>
Fri, 9 Sep 2016 18:02:42 +0000 (12:02 -0600)
WIP: HLSL: EOpGenMul arg reversal

12 files changed:
Test/baseResults/hlsl.intrinsics.frag.out
Test/baseResults/hlsl.intrinsics.vert.out
Test/baseResults/hlsl.matType.frag.out
Test/baseResults/hlsl.matrixindex.frag.out [new file with mode: 0644]
Test/baseResults/hlsl.templatetypes.frag.out
Test/baseResults/remap.hlsl.templatetypes.none.frag.out
Test/hlsl.intrinsics.frag
Test/hlsl.matrixindex.frag [new file with mode: 0644]
gtests/Hlsl.FromFile.cpp
hlsl/hlslGrammar.cpp
hlsl/hlslParseHelper.cpp
hlsl/hlslParseables.cpp

index ba3cb53..23297e9 100644 (file)
@@ -1140,80 +1140,80 @@ gl_FragCoord origin is upper left
 0:?           3.000000
 0:260  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
 0:260    Function Parameters: 
-0:260      'inF0' (layout(location=0 ) in 4-component vector of float)
-0:260      'inF1' (layout(location=1 ) in 4-component vector of float)
-0:260      'inF2' (layout(location=2 ) in 4-component vector of float)
-0:260      'inU0' (layout(location=3 ) in 4-component vector of uint)
-0:260      'inU1' (layout(location=4 ) in 4-component vector of uint)
+0:260      'inF0' (in 4-component vector of float)
+0:260      'inF1' (in 4-component vector of float)
+0:260      'inF2' (in 4-component vector of float)
+0:260      'inU0' (in 4-component vector of uint)
+0:260      'inU1' (in 4-component vector of uint)
 0:?     Sequence
 0:263      Sequence
 0:263        move second child to first child (temp bool)
 0:263          'r000' (temp bool)
 0:263          all (global bool)
-0:263            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:263            'inF0' (in 4-component vector of float)
 0:264      Sequence
 0:264        move second child to first child (temp 4-component vector of float)
 0:264          'r001' (temp 4-component vector of float)
 0:264          Absolute value (global 4-component vector of float)
-0:264            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:264            'inF0' (in 4-component vector of float)
 0:265      Sequence
 0:265        move second child to first child (temp 4-component vector of float)
 0:265          'r002' (temp 4-component vector of float)
 0:265          arc cosine (global 4-component vector of float)
-0:265            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:265            'inF0' (in 4-component vector of float)
 0:266      Sequence
 0:266        move second child to first child (temp bool)
 0:266          'r003' (temp bool)
 0:266          any (global bool)
-0:266            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:266            'inF0' (in 4-component vector of float)
 0:267      Sequence
 0:267        move second child to first child (temp 4-component vector of float)
 0:267          'r004' (temp 4-component vector of float)
 0:267          arc sine (global 4-component vector of float)
-0:267            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:267            'inF0' (in 4-component vector of float)
 0:268      Sequence
 0:268        move second child to first child (temp 4-component vector of int)
 0:268          'r005' (temp 4-component vector of int)
 0:268          floatBitsToInt (global 4-component vector of int)
-0:268            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:268            'inF0' (in 4-component vector of float)
 0:269      Sequence
 0:269        move second child to first child (temp 4-component vector of uint)
 0:269          'r006' (temp 4-component vector of uint)
 0:269          floatBitsToUint (global 4-component vector of uint)
-0:269            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:269            'inF0' (in 4-component vector of float)
 0:270      Sequence
 0:270        move second child to first child (temp 4-component vector of float)
 0:270          'r007' (temp 4-component vector of float)
 0:270          intBitsToFloat (global 4-component vector of float)
-0:270            'inU0' (layout(location=3 ) in 4-component vector of uint)
+0:270            'inU0' (in 4-component vector of uint)
 0:272      Sequence
 0:272        move second child to first child (temp 4-component vector of float)
 0:272          'r009' (temp 4-component vector of float)
 0:272          arc tangent (global 4-component vector of float)
-0:272            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:272            'inF0' (in 4-component vector of float)
 0:273      Sequence
 0:273        move second child to first child (temp 4-component vector of float)
 0:273          'r010' (temp 4-component vector of float)
 0:273          arc tangent (global 4-component vector of float)
-0:273            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:273            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:273            'inF0' (in 4-component vector of float)
+0:273            'inF1' (in 4-component vector of float)
 0:274      Sequence
 0:274        move second child to first child (temp 4-component vector of float)
 0:274          'r011' (temp 4-component vector of float)
 0:274          Ceiling (global 4-component vector of float)
-0:274            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:274            'inF0' (in 4-component vector of float)
 0:275      Sequence
 0:275        move second child to first child (temp 4-component vector of float)
 0:275          'r012' (temp 4-component vector of float)
 0:275          clamp (global 4-component vector of float)
-0:275            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:275            'inF1' (layout(location=1 ) in 4-component vector of float)
-0:275            'inF2' (layout(location=2 ) in 4-component vector of float)
+0:275            'inF0' (in 4-component vector of float)
+0:275            'inF1' (in 4-component vector of float)
+0:275            'inF2' (in 4-component vector of float)
 0:276      Test condition and select (temp void)
 0:276        Condition
 0:276        any (temp bool)
 0:276          Compare Less Than (temp 4-component vector of bool)
-0:276            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:276            'inF0' (in 4-component vector of float)
 0:276            Constant:
 0:276              0.000000
 0:276              0.000000
@@ -1225,12 +1225,12 @@ gl_FragCoord origin is upper left
 0:277        move second child to first child (temp 4-component vector of float)
 0:277          'r013' (temp 4-component vector of float)
 0:277          cosine (global 4-component vector of float)
-0:277            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:277            'inF0' (in 4-component vector of float)
 0:278      Sequence
 0:278        move second child to first child (temp 4-component vector of float)
 0:278          'r014' (temp 4-component vector of float)
 0:278          hyp. cosine (global 4-component vector of float)
-0:278            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:278            'inF0' (in 4-component vector of float)
 0:279      Sequence
 0:279        move second child to first child (temp 4-component vector of uint)
 0:279          'r015' (temp 4-component vector of uint)
@@ -1244,49 +1244,49 @@ gl_FragCoord origin is upper left
 0:280        move second child to first child (temp 4-component vector of float)
 0:280          'r016' (temp 4-component vector of float)
 0:280          dPdx (global 4-component vector of float)
-0:280            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:280            'inF0' (in 4-component vector of float)
 0:281      Sequence
 0:281        move second child to first child (temp 4-component vector of float)
 0:281          'r017' (temp 4-component vector of float)
 0:281          dPdxCoarse (global 4-component vector of float)
-0:281            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:281            'inF0' (in 4-component vector of float)
 0:282      Sequence
 0:282        move second child to first child (temp 4-component vector of float)
 0:282          'r018' (temp 4-component vector of float)
 0:282          dPdxFine (global 4-component vector of float)
-0:282            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:282            'inF0' (in 4-component vector of float)
 0:283      Sequence
 0:283        move second child to first child (temp 4-component vector of float)
 0:283          'r019' (temp 4-component vector of float)
 0:283          dPdy (global 4-component vector of float)
-0:283            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:283            'inF0' (in 4-component vector of float)
 0:284      Sequence
 0:284        move second child to first child (temp 4-component vector of float)
 0:284          'r020' (temp 4-component vector of float)
 0:284          dPdyCoarse (global 4-component vector of float)
-0:284            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:284            'inF0' (in 4-component vector of float)
 0:285      Sequence
 0:285        move second child to first child (temp 4-component vector of float)
 0:285          'r021' (temp 4-component vector of float)
 0:285          dPdyFine (global 4-component vector of float)
-0:285            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:285            'inF0' (in 4-component vector of float)
 0:286      Sequence
 0:286        move second child to first child (temp 4-component vector of float)
 0:286          'r022' (temp 4-component vector of float)
 0:286          degrees (global 4-component vector of float)
-0:286            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:286            'inF0' (in 4-component vector of float)
 0:287      Sequence
 0:287        move second child to first child (temp float)
 0:287          'r023' (temp float)
 0:287          distance (global float)
-0:287            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:287            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:287            'inF0' (in 4-component vector of float)
+0:287            'inF1' (in 4-component vector of float)
 0:288      Sequence
 0:288        move second child to first child (temp float)
 0:288          'r024' (temp float)
 0:288          dot-product (global float)
-0:288            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:288            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:288            'inF0' (in 4-component vector of float)
+0:288            'inF1' (in 4-component vector of float)
 0:289      Sequence
 0:289        move second child to first child (temp 4-component vector of float)
 0:289          'r025' (temp 4-component vector of float)
@@ -1295,38 +1295,38 @@ gl_FragCoord origin is upper left
 0:289              1.000000
 0:289            component-wise multiply (temp float)
 0:289              direct index (temp float)
-0:289                'inF0' (layout(location=0 ) in 4-component vector of float)
+0:289                'inF0' (in 4-component vector of float)
 0:289                Constant:
 0:289                  1 (const int)
 0:289              direct index (temp float)
-0:289                'inF1' (layout(location=1 ) in 4-component vector of float)
+0:289                'inF1' (in 4-component vector of float)
 0:289                Constant:
 0:289                  1 (const int)
 0:289            direct index (temp float)
-0:289              'inF0' (layout(location=0 ) in 4-component vector of float)
+0:289              'inF0' (in 4-component vector of float)
 0:289              Constant:
 0:289                2 (const int)
 0:289            direct index (temp float)
-0:289              'inF1' (layout(location=1 ) in 4-component vector of float)
+0:289              'inF1' (in 4-component vector of float)
 0:289              Constant:
 0:289                3 (const int)
 0:293      Sequence
 0:293        move second child to first child (temp 4-component vector of float)
 0:293          'r029' (temp 4-component vector of float)
 0:293          exp (global 4-component vector of float)
-0:293            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:293            'inF0' (in 4-component vector of float)
 0:294      Sequence
 0:294        move second child to first child (temp 4-component vector of float)
 0:294          'r030' (temp 4-component vector of float)
 0:294          exp2 (global 4-component vector of float)
-0:294            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:294            'inF0' (in 4-component vector of float)
 0:295      Sequence
 0:295        move second child to first child (temp 4-component vector of float)
 0:295          'r031' (temp 4-component vector of float)
 0:295          face-forward (global 4-component vector of float)
-0:295            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:295            'inF1' (layout(location=1 ) in 4-component vector of float)
-0:295            'inF2' (layout(location=2 ) in 4-component vector of float)
+0:295            'inF0' (in 4-component vector of float)
+0:295            'inF1' (in 4-component vector of float)
+0:295            'inF2' (in 4-component vector of float)
 0:296      Sequence
 0:296        move second child to first child (temp 4-component vector of uint)
 0:296          'r032' (temp 4-component vector of uint)
@@ -1349,122 +1349,122 @@ gl_FragCoord origin is upper left
 0:298        move second child to first child (temp 4-component vector of float)
 0:298          'r034' (temp 4-component vector of float)
 0:298          Floor (global 4-component vector of float)
-0:298            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:298            'inF0' (in 4-component vector of float)
 0:300      Sequence
 0:300        move second child to first child (temp 4-component vector of float)
 0:300          'r036' (temp 4-component vector of float)
 0:300          mod (global 4-component vector of float)
-0:300            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:300            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:300            'inF0' (in 4-component vector of float)
+0:300            'inF1' (in 4-component vector of float)
 0:301      Sequence
 0:301        move second child to first child (temp 4-component vector of float)
 0:301          'r037' (temp 4-component vector of float)
 0:301          Fraction (global 4-component vector of float)
-0:301            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:301            'inF0' (in 4-component vector of float)
 0:302      Sequence
 0:302        move second child to first child (temp 4-component vector of float)
 0:302          'r038' (temp 4-component vector of float)
 0:302          frexp (global 4-component vector of float)
-0:302            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:302            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:302            'inF0' (in 4-component vector of float)
+0:302            'inF1' (in 4-component vector of float)
 0:303      Sequence
 0:303        move second child to first child (temp 4-component vector of float)
 0:303          'r039' (temp 4-component vector of float)
 0:303          fwidth (global 4-component vector of float)
-0:303            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:303            'inF0' (in 4-component vector of float)
 0:304      Sequence
 0:304        move second child to first child (temp 4-component vector of bool)
 0:304          'r040' (temp 4-component vector of bool)
 0:304          isinf (global 4-component vector of bool)
-0:304            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:304            'inF0' (in 4-component vector of float)
 0:305      Sequence
 0:305        move second child to first child (temp 4-component vector of bool)
 0:305          'r041' (temp 4-component vector of bool)
 0:305          isnan (global 4-component vector of bool)
-0:305            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:305            'inF0' (in 4-component vector of float)
 0:306      Sequence
 0:306        move second child to first child (temp 4-component vector of float)
 0:306          'r042' (temp 4-component vector of float)
 0:306          ldexp (global 4-component vector of float)
-0:306            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:306            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:306            'inF0' (in 4-component vector of float)
+0:306            'inF1' (in 4-component vector of float)
 0:307      Sequence
 0:307        move second child to first child (temp 4-component vector of float)
 0:307          'r039a' (temp 4-component vector of float)
 0:307          mix (global 4-component vector of float)
-0:307            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:307            'inF1' (layout(location=1 ) in 4-component vector of float)
-0:307            'inF2' (layout(location=2 ) in 4-component vector of float)
+0:307            'inF0' (in 4-component vector of float)
+0:307            'inF1' (in 4-component vector of float)
+0:307            'inF2' (in 4-component vector of float)
 0:308      Sequence
 0:308        move second child to first child (temp float)
 0:308          'r043' (temp float)
 0:308          length (global float)
-0:308            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:308            'inF0' (in 4-component vector of float)
 0:309      Sequence
 0:309        move second child to first child (temp 4-component vector of float)
 0:309          'r044' (temp 4-component vector of float)
 0:309          log (global 4-component vector of float)
-0:309            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:309            'inF0' (in 4-component vector of float)
 0:310      Sequence
 0:310        move second child to first child (temp 4-component vector of float)
 0:310          'r045' (temp 4-component vector of float)
 0:310          vector-scale (temp 4-component vector of float)
 0:310            log2 (temp 4-component vector of float)
-0:310              'inF0' (layout(location=0 ) in 4-component vector of float)
+0:310              'inF0' (in 4-component vector of float)
 0:310            Constant:
 0:310              0.301030
 0:311      Sequence
 0:311        move second child to first child (temp 4-component vector of float)
 0:311          'r046' (temp 4-component vector of float)
 0:311          log2 (global 4-component vector of float)
-0:311            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:311            'inF0' (in 4-component vector of float)
 0:312      Sequence
 0:312        move second child to first child (temp 4-component vector of float)
 0:312          'r047' (temp 4-component vector of float)
 0:312          max (global 4-component vector of float)
-0:312            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:312            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:312            'inF0' (in 4-component vector of float)
+0:312            'inF1' (in 4-component vector of float)
 0:313      Sequence
 0:313        move second child to first child (temp 4-component vector of float)
 0:313          'r048' (temp 4-component vector of float)
 0:313          min (global 4-component vector of float)
-0:313            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:313            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:313            'inF0' (in 4-component vector of float)
+0:313            'inF1' (in 4-component vector of float)
 0:314      Sequence
 0:314        move second child to first child (temp 4-component vector of float)
 0:314          'r049' (temp 4-component vector of float)
 0:314          normalize (global 4-component vector of float)
-0:314            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:314            'inF0' (in 4-component vector of float)
 0:315      Sequence
 0:315        move second child to first child (temp 4-component vector of float)
 0:315          'r050' (temp 4-component vector of float)
 0:315          pow (global 4-component vector of float)
-0:315            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:315            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:315            'inF0' (in 4-component vector of float)
+0:315            'inF1' (in 4-component vector of float)
 0:316      Sequence
 0:316        move second child to first child (temp 4-component vector of float)
 0:316          'r051' (temp 4-component vector of float)
 0:316          radians (global 4-component vector of float)
-0:316            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:316            'inF0' (in 4-component vector of float)
 0:317      Sequence
 0:317        move second child to first child (temp 4-component vector of float)
 0:317          'r052' (temp 4-component vector of float)
 0:317          divide (temp 4-component vector of float)
 0:317            Constant:
 0:317              1.000000
-0:317            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:317            'inF0' (in 4-component vector of float)
 0:318      Sequence
 0:318        move second child to first child (temp 4-component vector of float)
 0:318          'r053' (temp 4-component vector of float)
 0:318          reflect (global 4-component vector of float)
-0:318            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:318            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:318            'inF0' (in 4-component vector of float)
+0:318            'inF1' (in 4-component vector of float)
 0:319      Sequence
 0:319        move second child to first child (temp 4-component vector of float)
 0:319          'r054' (temp 4-component vector of float)
 0:319          refract (global 4-component vector of float)
-0:319            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:319            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:319            'inF0' (in 4-component vector of float)
+0:319            'inF1' (in 4-component vector of float)
 0:319            Constant:
 0:319              2.000000
 0:320      Sequence
@@ -1480,17 +1480,17 @@ gl_FragCoord origin is upper left
 0:321        move second child to first child (temp 4-component vector of float)
 0:321          'r056' (temp 4-component vector of float)
 0:321          roundEven (global 4-component vector of float)
-0:321            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:321            'inF0' (in 4-component vector of float)
 0:322      Sequence
 0:322        move second child to first child (temp 4-component vector of float)
 0:322          'r057' (temp 4-component vector of float)
 0:322          inverse sqrt (global 4-component vector of float)
-0:322            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:322            'inF0' (in 4-component vector of float)
 0:323      Sequence
 0:323        move second child to first child (temp 4-component vector of float)
 0:323          'r058' (temp 4-component vector of float)
 0:323          clamp (temp 4-component vector of float)
-0:323            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:323            'inF0' (in 4-component vector of float)
 0:323            Constant:
 0:323              0.000000
 0:323            Constant:
@@ -1499,68 +1499,65 @@ gl_FragCoord origin is upper left
 0:324        move second child to first child (temp 4-component vector of float)
 0:324          'r059' (temp 4-component vector of float)
 0:324          Sign (global 4-component vector of float)
-0:324            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:324            'inF0' (in 4-component vector of float)
 0:325      Sequence
 0:325        move second child to first child (temp 4-component vector of float)
 0:325          'r060' (temp 4-component vector of float)
 0:325          sine (global 4-component vector of float)
-0:325            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:325            'inF0' (in 4-component vector of float)
 0:326      Sequence
 0:326        move second child to first child (temp 4-component vector of float)
-0:326          'inF1' (layout(location=1 ) in 4-component vector of float)
+0:326          'inF1' (in 4-component vector of float)
 0:326          sine (temp 4-component vector of float)
-0:326            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:326            'inF0' (in 4-component vector of float)
 0:326        move second child to first child (temp 4-component vector of float)
-0:326          'inF2' (layout(location=2 ) in 4-component vector of float)
+0:326          'inF2' (in 4-component vector of float)
 0:326          cosine (temp 4-component vector of float)
-0:326            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:326            'inF0' (in 4-component vector of float)
 0:327      Sequence
 0:327        move second child to first child (temp 4-component vector of float)
 0:327          'r061' (temp 4-component vector of float)
 0:327          hyp. sine (global 4-component vector of float)
-0:327            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:327            'inF0' (in 4-component vector of float)
 0:328      Sequence
 0:328        move second child to first child (temp 4-component vector of float)
 0:328          'r062' (temp 4-component vector of float)
 0:328          smoothstep (global 4-component vector of float)
-0:328            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:328            'inF1' (layout(location=1 ) in 4-component vector of float)
-0:328            'inF2' (layout(location=2 ) in 4-component vector of float)
+0:328            'inF0' (in 4-component vector of float)
+0:328            'inF1' (in 4-component vector of float)
+0:328            'inF2' (in 4-component vector of float)
 0:329      Sequence
 0:329        move second child to first child (temp 4-component vector of float)
 0:329          'r063' (temp 4-component vector of float)
 0:329          sqrt (global 4-component vector of float)
-0:329            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:329            'inF0' (in 4-component vector of float)
 0:330      Sequence
 0:330        move second child to first child (temp 4-component vector of float)
 0:330          'r064' (temp 4-component vector of float)
 0:330          step (global 4-component vector of float)
-0:330            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:330            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:330            'inF0' (in 4-component vector of float)
+0:330            'inF1' (in 4-component vector of float)
 0:331      Sequence
 0:331        move second child to first child (temp 4-component vector of float)
 0:331          'r065' (temp 4-component vector of float)
 0:331          tangent (global 4-component vector of float)
-0:331            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:331            'inF0' (in 4-component vector of float)
 0:332      Sequence
 0:332        move second child to first child (temp 4-component vector of float)
 0:332          'r066' (temp 4-component vector of float)
 0:332          hyp. tangent (global 4-component vector of float)
-0:332            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:332            'inF0' (in 4-component vector of float)
 0:334      Sequence
 0:334        move second child to first child (temp 4-component vector of float)
 0:334          'r067' (temp 4-component vector of float)
 0:334          trunc (global 4-component vector of float)
-0:334            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:337      Sequence
-0:337        move second child to first child (temp 4-component vector of float)
-0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:337        Branch: Return
+0:334            'inF0' (in 4-component vector of float)
+0:337      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:?           4.000000
 0:401  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
 0:401    Function Parameters: 
 0:401      'inF0' (in 2X2 matrix of float)
@@ -2472,20 +2469,20 @@ gl_FragCoord origin is upper left
 0:443        move second child to first child (temp float)
 0:443          'r0' (temp float)
 0:443          component-wise multiply (temp float)
-0:443            'inF0' (in float)
 0:443            'inF1' (in float)
+0:443            'inF0' (in float)
 0:443      Sequence
 0:443        move second child to first child (temp 2-component vector of float)
 0:443          'r1' (temp 2-component vector of float)
 0:443          vector-scale (temp 2-component vector of float)
-0:443            'inFV0' (in 2-component vector of float)
 0:443            'inF0' (in float)
+0:443            'inFV0' (in 2-component vector of float)
 0:443      Sequence
 0:443        move second child to first child (temp 2-component vector of float)
 0:443          'r2' (temp 2-component vector of float)
 0:443          vector-scale (temp 2-component vector of float)
-0:443            'inF0' (in float)
 0:443            'inFV0' (in 2-component vector of float)
+0:443            'inF0' (in float)
 0:443      Sequence
 0:443        move second child to first child (temp float)
 0:443          'r3' (temp float)
@@ -2495,33 +2492,33 @@ gl_FragCoord origin is upper left
 0:443      Sequence
 0:443        move second child to first child (temp 2-component vector of float)
 0:443          'r4' (temp 2-component vector of float)
-0:443          matrix-times-vector (temp 2-component vector of float)
-0:443            'inFM0' (in 2X2 matrix of float)
+0:443          vector-times-matrix (temp 2-component vector of float)
 0:443            'inFV0' (in 2-component vector of float)
+0:443            'inFM0' (in 2X2 matrix of float)
 0:443      Sequence
 0:443        move second child to first child (temp 2-component vector of float)
 0:443          'r5' (temp 2-component vector of float)
-0:443          vector-times-matrix (temp 2-component vector of float)
-0:443            'inFV0' (in 2-component vector of float)
+0:443          matrix-times-vector (temp 2-component vector of float)
 0:443            'inFM0' (in 2X2 matrix of float)
+0:443            'inFV0' (in 2-component vector of float)
 0:443      Sequence
 0:443        move second child to first child (temp 2X2 matrix of float)
 0:443          'r6' (temp 2X2 matrix of float)
 0:443          matrix-scale (temp 2X2 matrix of float)
-0:443            'inFM0' (in 2X2 matrix of float)
 0:443            'inF0' (in float)
+0:443            'inFM0' (in 2X2 matrix of float)
 0:443      Sequence
 0:443        move second child to first child (temp 2X2 matrix of float)
 0:443          'r7' (temp 2X2 matrix of float)
 0:443          matrix-scale (temp 2X2 matrix of float)
-0:443            'inF0' (in float)
 0:443            'inFM0' (in 2X2 matrix of float)
+0:443            'inF0' (in float)
 0:443      Sequence
 0:443        move second child to first child (temp 2X2 matrix of float)
 0:443          'r8' (temp 2X2 matrix of float)
 0:443          matrix-multiply (temp 2X2 matrix of float)
-0:443            'inFM0' (in 2X2 matrix of float)
 0:443            'inFM1' (in 2X2 matrix of float)
+0:443            'inFM0' (in 2X2 matrix of float)
 0:449  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
 0:449    Function Parameters: 
 0:449      'inF0' (in float)
@@ -2535,20 +2532,20 @@ gl_FragCoord origin is upper left
 0:450        move second child to first child (temp float)
 0:450          'r0' (temp float)
 0:450          component-wise multiply (temp float)
-0:450            'inF0' (in float)
 0:450            'inF1' (in float)
+0:450            'inF0' (in float)
 0:450      Sequence
 0:450        move second child to first child (temp 3-component vector of float)
 0:450          'r1' (temp 3-component vector of float)
 0:450          vector-scale (temp 3-component vector of float)
-0:450            'inFV0' (in 3-component vector of float)
 0:450            'inF0' (in float)
+0:450            'inFV0' (in 3-component vector of float)
 0:450      Sequence
 0:450        move second child to first child (temp 3-component vector of float)
 0:450          'r2' (temp 3-component vector of float)
 0:450          vector-scale (temp 3-component vector of float)
-0:450            'inF0' (in float)
 0:450            'inFV0' (in 3-component vector of float)
+0:450            'inF0' (in float)
 0:450      Sequence
 0:450        move second child to first child (temp float)
 0:450          'r3' (temp float)
@@ -2558,33 +2555,33 @@ gl_FragCoord origin is upper left
 0:450      Sequence
 0:450        move second child to first child (temp 3-component vector of float)
 0:450          'r4' (temp 3-component vector of float)
-0:450          matrix-times-vector (temp 3-component vector of float)
-0:450            'inFM0' (in 3X3 matrix of float)
+0:450          vector-times-matrix (temp 3-component vector of float)
 0:450            'inFV0' (in 3-component vector of float)
+0:450            'inFM0' (in 3X3 matrix of float)
 0:450      Sequence
 0:450        move second child to first child (temp 3-component vector of float)
 0:450          'r5' (temp 3-component vector of float)
-0:450          vector-times-matrix (temp 3-component vector of float)
-0:450            'inFV0' (in 3-component vector of float)
+0:450          matrix-times-vector (temp 3-component vector of float)
 0:450            'inFM0' (in 3X3 matrix of float)
+0:450            'inFV0' (in 3-component vector of float)
 0:450      Sequence
 0:450        move second child to first child (temp 3X3 matrix of float)
 0:450          'r6' (temp 3X3 matrix of float)
 0:450          matrix-scale (temp 3X3 matrix of float)
-0:450            'inFM0' (in 3X3 matrix of float)
 0:450            'inF0' (in float)
+0:450            'inFM0' (in 3X3 matrix of float)
 0:450      Sequence
 0:450        move second child to first child (temp 3X3 matrix of float)
 0:450          'r7' (temp 3X3 matrix of float)
 0:450          matrix-scale (temp 3X3 matrix of float)
-0:450            'inF0' (in float)
 0:450            'inFM0' (in 3X3 matrix of float)
+0:450            'inF0' (in float)
 0:450      Sequence
 0:450        move second child to first child (temp 3X3 matrix of float)
 0:450          'r8' (temp 3X3 matrix of float)
 0:450          matrix-multiply (temp 3X3 matrix of float)
-0:450            'inFM0' (in 3X3 matrix of float)
 0:450            'inFM1' (in 3X3 matrix of float)
+0:450            'inFM0' (in 3X3 matrix of float)
 0:456  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
 0:456    Function Parameters: 
 0:456      'inF0' (in float)
@@ -2598,20 +2595,20 @@ gl_FragCoord origin is upper left
 0:457        move second child to first child (temp float)
 0:457          'r0' (temp float)
 0:457          component-wise multiply (temp float)
-0:457            'inF0' (in float)
 0:457            'inF1' (in float)
+0:457            'inF0' (in float)
 0:457      Sequence
 0:457        move second child to first child (temp 4-component vector of float)
 0:457          'r1' (temp 4-component vector of float)
 0:457          vector-scale (temp 4-component vector of float)
-0:457            'inFV0' (in 4-component vector of float)
 0:457            'inF0' (in float)
+0:457            'inFV0' (in 4-component vector of float)
 0:457      Sequence
 0:457        move second child to first child (temp 4-component vector of float)
 0:457          'r2' (temp 4-component vector of float)
 0:457          vector-scale (temp 4-component vector of float)
-0:457            'inF0' (in float)
 0:457            'inFV0' (in 4-component vector of float)
+0:457            'inF0' (in float)
 0:457      Sequence
 0:457        move second child to first child (temp float)
 0:457          'r3' (temp float)
@@ -2621,75 +2618,75 @@ gl_FragCoord origin is upper left
 0:457      Sequence
 0:457        move second child to first child (temp 4-component vector of float)
 0:457          'r4' (temp 4-component vector of float)
-0:457          matrix-times-vector (temp 4-component vector of float)
-0:457            'inFM0' (in 4X4 matrix of float)
+0:457          vector-times-matrix (temp 4-component vector of float)
 0:457            'inFV0' (in 4-component vector of float)
+0:457            'inFM0' (in 4X4 matrix of float)
 0:457      Sequence
 0:457        move second child to first child (temp 4-component vector of float)
 0:457          'r5' (temp 4-component vector of float)
-0:457          vector-times-matrix (temp 4-component vector of float)
-0:457            'inFV0' (in 4-component vector of float)
+0:457          matrix-times-vector (temp 4-component vector of float)
 0:457            'inFM0' (in 4X4 matrix of float)
+0:457            'inFV0' (in 4-component vector of float)
 0:457      Sequence
 0:457        move second child to first child (temp 4X4 matrix of float)
 0:457          'r6' (temp 4X4 matrix of float)
 0:457          matrix-scale (temp 4X4 matrix of float)
-0:457            'inFM0' (in 4X4 matrix of float)
 0:457            'inF0' (in float)
+0:457            'inFM0' (in 4X4 matrix of float)
 0:457      Sequence
 0:457        move second child to first child (temp 4X4 matrix of float)
 0:457          'r7' (temp 4X4 matrix of float)
 0:457          matrix-scale (temp 4X4 matrix of float)
-0:457            'inF0' (in float)
 0:457            'inFM0' (in 4X4 matrix of float)
+0:457            'inF0' (in float)
 0:457      Sequence
 0:457        move second child to first child (temp 4X4 matrix of float)
 0:457          'r8' (temp 4X4 matrix of float)
 0:457          matrix-multiply (temp 4X4 matrix of float)
-0:457            'inFM0' (in 4X4 matrix of float)
 0:457            'inFM1' (in 4X4 matrix of float)
-0:466  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void)
+0:457            'inFM0' (in 4X4 matrix of float)
+0:466  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
 0:466    Function Parameters: 
 0:466      'inF0' (in float)
 0:466      'inF1' (in float)
 0:466      'inFV2' (in 2-component vector of float)
 0:466      'inFV3' (in 3-component vector of float)
-0:466      'inFM2x3' (in 3X2 matrix of float)
-0:466      'inFM3x2' (in 2X3 matrix of float)
+0:466      'inFM2x3' (in 2X3 matrix of float)
+0:466      'inFM3x2' (in 3X2 matrix of float)
 0:466      'inFM3x3' (in 3X3 matrix of float)
-0:466      'inFM3x4' (in 4X3 matrix of float)
-0:466      'inFM2x4' (in 4X2 matrix of float)
+0:466      'inFM3x4' (in 3X4 matrix of float)
+0:466      'inFM2x4' (in 2X4 matrix of float)
 0:?     Sequence
 0:467      Sequence
 0:467        move second child to first child (temp float)
 0:467          'r00' (temp float)
 0:467          component-wise multiply (temp float)
-0:467            'inF0' (in float)
 0:467            'inF1' (in float)
+0:467            'inF0' (in float)
 0:468      Sequence
 0:468        move second child to first child (temp 2-component vector of float)
 0:468          'r01' (temp 2-component vector of float)
 0:468          vector-scale (temp 2-component vector of float)
-0:468            'inFV2' (in 2-component vector of float)
 0:468            'inF0' (in float)
+0:468            'inFV2' (in 2-component vector of float)
 0:469      Sequence
 0:469        move second child to first child (temp 3-component vector of float)
 0:469          'r02' (temp 3-component vector of float)
 0:469          vector-scale (temp 3-component vector of float)
-0:469            'inFV3' (in 3-component vector of float)
 0:469            'inF0' (in float)
+0:469            'inFV3' (in 3-component vector of float)
 0:470      Sequence
 0:470        move second child to first child (temp 2-component vector of float)
 0:470          'r03' (temp 2-component vector of float)
 0:470          vector-scale (temp 2-component vector of float)
-0:470            'inF0' (in float)
 0:470            'inFV2' (in 2-component vector of float)
+0:470            'inF0' (in float)
 0:471      Sequence
 0:471        move second child to first child (temp 3-component vector of float)
 0:471          'r04' (temp 3-component vector of float)
 0:471          vector-scale (temp 3-component vector of float)
-0:471            'inF0' (in float)
 0:471            'inFV3' (in 3-component vector of float)
+0:471            'inF0' (in float)
 0:472      Sequence
 0:472        move second child to first child (temp float)
 0:472          'r05' (temp float)
@@ -2705,63 +2702,81 @@ gl_FragCoord origin is upper left
 0:474      Sequence
 0:474        move second child to first child (temp 3-component vector of float)
 0:474          'r07' (temp 3-component vector of float)
-0:474          vector-times-matrix (temp 3-component vector of float)
+0:474          matrix-times-vector (temp 3-component vector of float)
+0:474            'inFM2x3' (in 2X3 matrix of float)
 0:474            'inFV2' (in 2-component vector of float)
-0:474            'inFM2x3' (in 3X2 matrix of float)
 0:475      Sequence
 0:475        move second child to first child (temp 2-component vector of float)
 0:475          'r08' (temp 2-component vector of float)
-0:475          vector-times-matrix (temp 2-component vector of float)
+0:475          matrix-times-vector (temp 2-component vector of float)
+0:475            'inFM3x2' (in 3X2 matrix of float)
 0:475            'inFV3' (in 3-component vector of float)
-0:475            'inFM3x2' (in 2X3 matrix of float)
 0:476      Sequence
 0:476        move second child to first child (temp 2-component vector of float)
 0:476          'r09' (temp 2-component vector of float)
-0:476          matrix-times-vector (temp 2-component vector of float)
-0:476            'inFM2x3' (in 3X2 matrix of float)
+0:476          vector-times-matrix (temp 2-component vector of float)
 0:476            'inFV3' (in 3-component vector of float)
+0:476            'inFM2x3' (in 2X3 matrix of float)
 0:477      Sequence
 0:477        move second child to first child (temp 3-component vector of float)
 0:477          'r10' (temp 3-component vector of float)
-0:477          matrix-times-vector (temp 3-component vector of float)
-0:477            'inFM3x2' (in 2X3 matrix of float)
+0:477          vector-times-matrix (temp 3-component vector of float)
 0:477            'inFV2' (in 2-component vector of float)
+0:477            'inFM3x2' (in 3X2 matrix of float)
 0:478      Sequence
-0:478        move second child to first child (temp 3X2 matrix of float)
-0:478          'r11' (temp 3X2 matrix of float)
-0:478          matrix-scale (temp 3X2 matrix of float)
-0:478            'inFM2x3' (in 3X2 matrix of float)
+0:478        move second child to first child (temp 2X3 matrix of float)
+0:478          'r11' (temp 2X3 matrix of float)
+0:478          matrix-scale (temp 2X3 matrix of float)
 0:478            'inF0' (in float)
+0:478            'inFM2x3' (in 2X3 matrix of float)
 0:479      Sequence
-0:479        move second child to first child (temp 2X3 matrix of float)
-0:479          'r12' (temp 2X3 matrix of float)
-0:479          matrix-scale (temp 2X3 matrix of float)
-0:479            'inFM3x2' (in 2X3 matrix of float)
+0:479        move second child to first child (temp 3X2 matrix of float)
+0:479          'r12' (temp 3X2 matrix of float)
+0:479          matrix-scale (temp 3X2 matrix of float)
 0:479            'inF0' (in float)
+0:479            'inFM3x2' (in 3X2 matrix of float)
 0:480      Sequence
 0:480        move second child to first child (temp 2X2 matrix of float)
 0:480          'r13' (temp 2X2 matrix of float)
 0:480          matrix-multiply (temp 2X2 matrix of float)
-0:480            'inFM2x3' (in 3X2 matrix of float)
-0:480            'inFM3x2' (in 2X3 matrix of float)
+0:480            'inFM3x2' (in 3X2 matrix of float)
+0:480            'inFM2x3' (in 2X3 matrix of float)
 0:481      Sequence
-0:481        move second child to first child (temp 3X2 matrix of float)
-0:481          'r14' (temp 3X2 matrix of float)
-0:481          matrix-multiply (temp 3X2 matrix of float)
-0:481            'inFM2x3' (in 3X2 matrix of float)
+0:481        move second child to first child (temp 2X3 matrix of float)
+0:481          'r14' (temp 2X3 matrix of float)
+0:481          matrix-multiply (temp 2X3 matrix of float)
 0:481            'inFM3x3' (in 3X3 matrix of float)
+0:481            'inFM2x3' (in 2X3 matrix of float)
 0:482      Sequence
-0:482        move second child to first child (temp 4X2 matrix of float)
-0:482          'r15' (temp 4X2 matrix of float)
-0:482          matrix-multiply (temp 4X2 matrix of float)
-0:482            'inFM2x3' (in 3X2 matrix of float)
-0:482            'inFM3x4' (in 4X3 matrix of float)
+0:482        move second child to first child (temp 2X4 matrix of float)
+0:482          'r15' (temp 2X4 matrix of float)
+0:482          matrix-multiply (temp 2X4 matrix of float)
+0:482            'inFM3x4' (in 3X4 matrix of float)
+0:482            'inFM2x3' (in 2X3 matrix of float)
 0:483      Sequence
-0:483        move second child to first child (temp 4X3 matrix of float)
-0:483          'r16' (temp 4X3 matrix of float)
-0:483          matrix-multiply (temp 4X3 matrix of float)
-0:483            'inFM3x2' (in 2X3 matrix of float)
-0:483            'inFM2x4' (in 4X2 matrix of float)
+0:483        move second child to first child (temp 3X4 matrix of float)
+0:483          'r16' (temp 3X4 matrix of float)
+0:483          matrix-multiply (temp 3X4 matrix of float)
+0:483            'inFM2x4' (in 2X4 matrix of float)
+0:483            'inFM3x2' (in 3X2 matrix of float)
+0:489  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:489    Function Parameters: 
+0:?     Sequence
+0:491      move second child to first child (temp 4-component vector of float)
+0:491        color: direct index for structure (temp 4-component vector of float)
+0:491          'ps_output' (temp structure{temp 4-component vector of float color})
+0:491          Constant:
+0:491            0 (const int)
+0:491        Constant:
+0:491          1.000000
+0:491          1.000000
+0:491          1.000000
+0:491          1.000000
+0:492      Sequence
+0:492        move second child to first child (temp structure{temp 4-component vector of float color})
+0:?           '@entryPointOutput' (layout(location=0 ) out structure{temp 4-component vector of float color})
+0:492          'ps_output' (temp structure{temp 4-component vector of float color})
+0:492        Branch: Return
 0:?   Linker Objects
 0:?     'gs_ua' (global uint)
 0:?     'gs_ub' (global uint)
@@ -3921,80 +3936,80 @@ gl_FragCoord origin is upper left
 0:?           3.000000
 0:260  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
 0:260    Function Parameters: 
-0:260      'inF0' (layout(location=0 ) in 4-component vector of float)
-0:260      'inF1' (layout(location=1 ) in 4-component vector of float)
-0:260      'inF2' (layout(location=2 ) in 4-component vector of float)
-0:260      'inU0' (layout(location=3 ) in 4-component vector of uint)
-0:260      'inU1' (layout(location=4 ) in 4-component vector of uint)
+0:260      'inF0' (in 4-component vector of float)
+0:260      'inF1' (in 4-component vector of float)
+0:260      'inF2' (in 4-component vector of float)
+0:260      'inU0' (in 4-component vector of uint)
+0:260      'inU1' (in 4-component vector of uint)
 0:?     Sequence
 0:263      Sequence
 0:263        move second child to first child (temp bool)
 0:263          'r000' (temp bool)
 0:263          all (global bool)
-0:263            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:263            'inF0' (in 4-component vector of float)
 0:264      Sequence
 0:264        move second child to first child (temp 4-component vector of float)
 0:264          'r001' (temp 4-component vector of float)
 0:264          Absolute value (global 4-component vector of float)
-0:264            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:264            'inF0' (in 4-component vector of float)
 0:265      Sequence
 0:265        move second child to first child (temp 4-component vector of float)
 0:265          'r002' (temp 4-component vector of float)
 0:265          arc cosine (global 4-component vector of float)
-0:265            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:265            'inF0' (in 4-component vector of float)
 0:266      Sequence
 0:266        move second child to first child (temp bool)
 0:266          'r003' (temp bool)
 0:266          any (global bool)
-0:266            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:266            'inF0' (in 4-component vector of float)
 0:267      Sequence
 0:267        move second child to first child (temp 4-component vector of float)
 0:267          'r004' (temp 4-component vector of float)
 0:267          arc sine (global 4-component vector of float)
-0:267            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:267            'inF0' (in 4-component vector of float)
 0:268      Sequence
 0:268        move second child to first child (temp 4-component vector of int)
 0:268          'r005' (temp 4-component vector of int)
 0:268          floatBitsToInt (global 4-component vector of int)
-0:268            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:268            'inF0' (in 4-component vector of float)
 0:269      Sequence
 0:269        move second child to first child (temp 4-component vector of uint)
 0:269          'r006' (temp 4-component vector of uint)
 0:269          floatBitsToUint (global 4-component vector of uint)
-0:269            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:269            'inF0' (in 4-component vector of float)
 0:270      Sequence
 0:270        move second child to first child (temp 4-component vector of float)
 0:270          'r007' (temp 4-component vector of float)
 0:270          intBitsToFloat (global 4-component vector of float)
-0:270            'inU0' (layout(location=3 ) in 4-component vector of uint)
+0:270            'inU0' (in 4-component vector of uint)
 0:272      Sequence
 0:272        move second child to first child (temp 4-component vector of float)
 0:272          'r009' (temp 4-component vector of float)
 0:272          arc tangent (global 4-component vector of float)
-0:272            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:272            'inF0' (in 4-component vector of float)
 0:273      Sequence
 0:273        move second child to first child (temp 4-component vector of float)
 0:273          'r010' (temp 4-component vector of float)
 0:273          arc tangent (global 4-component vector of float)
-0:273            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:273            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:273            'inF0' (in 4-component vector of float)
+0:273            'inF1' (in 4-component vector of float)
 0:274      Sequence
 0:274        move second child to first child (temp 4-component vector of float)
 0:274          'r011' (temp 4-component vector of float)
 0:274          Ceiling (global 4-component vector of float)
-0:274            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:274            'inF0' (in 4-component vector of float)
 0:275      Sequence
 0:275        move second child to first child (temp 4-component vector of float)
 0:275          'r012' (temp 4-component vector of float)
 0:275          clamp (global 4-component vector of float)
-0:275            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:275            'inF1' (layout(location=1 ) in 4-component vector of float)
-0:275            'inF2' (layout(location=2 ) in 4-component vector of float)
+0:275            'inF0' (in 4-component vector of float)
+0:275            'inF1' (in 4-component vector of float)
+0:275            'inF2' (in 4-component vector of float)
 0:276      Test condition and select (temp void)
 0:276        Condition
 0:276        any (temp bool)
 0:276          Compare Less Than (temp 4-component vector of bool)
-0:276            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:276            'inF0' (in 4-component vector of float)
 0:276            Constant:
 0:276              0.000000
 0:276              0.000000
@@ -4006,12 +4021,12 @@ gl_FragCoord origin is upper left
 0:277        move second child to first child (temp 4-component vector of float)
 0:277          'r013' (temp 4-component vector of float)
 0:277          cosine (global 4-component vector of float)
-0:277            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:277            'inF0' (in 4-component vector of float)
 0:278      Sequence
 0:278        move second child to first child (temp 4-component vector of float)
 0:278          'r014' (temp 4-component vector of float)
 0:278          hyp. cosine (global 4-component vector of float)
-0:278            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:278            'inF0' (in 4-component vector of float)
 0:279      Sequence
 0:279        move second child to first child (temp 4-component vector of uint)
 0:279          'r015' (temp 4-component vector of uint)
@@ -4025,49 +4040,49 @@ gl_FragCoord origin is upper left
 0:280        move second child to first child (temp 4-component vector of float)
 0:280          'r016' (temp 4-component vector of float)
 0:280          dPdx (global 4-component vector of float)
-0:280            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:280            'inF0' (in 4-component vector of float)
 0:281      Sequence
 0:281        move second child to first child (temp 4-component vector of float)
 0:281          'r017' (temp 4-component vector of float)
 0:281          dPdxCoarse (global 4-component vector of float)
-0:281            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:281            'inF0' (in 4-component vector of float)
 0:282      Sequence
 0:282        move second child to first child (temp 4-component vector of float)
 0:282          'r018' (temp 4-component vector of float)
 0:282          dPdxFine (global 4-component vector of float)
-0:282            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:282            'inF0' (in 4-component vector of float)
 0:283      Sequence
 0:283        move second child to first child (temp 4-component vector of float)
 0:283          'r019' (temp 4-component vector of float)
 0:283          dPdy (global 4-component vector of float)
-0:283            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:283            'inF0' (in 4-component vector of float)
 0:284      Sequence
 0:284        move second child to first child (temp 4-component vector of float)
 0:284          'r020' (temp 4-component vector of float)
 0:284          dPdyCoarse (global 4-component vector of float)
-0:284            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:284            'inF0' (in 4-component vector of float)
 0:285      Sequence
 0:285        move second child to first child (temp 4-component vector of float)
 0:285          'r021' (temp 4-component vector of float)
 0:285          dPdyFine (global 4-component vector of float)
-0:285            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:285            'inF0' (in 4-component vector of float)
 0:286      Sequence
 0:286        move second child to first child (temp 4-component vector of float)
 0:286          'r022' (temp 4-component vector of float)
 0:286          degrees (global 4-component vector of float)
-0:286            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:286            'inF0' (in 4-component vector of float)
 0:287      Sequence
 0:287        move second child to first child (temp float)
 0:287          'r023' (temp float)
 0:287          distance (global float)
-0:287            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:287            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:287            'inF0' (in 4-component vector of float)
+0:287            'inF1' (in 4-component vector of float)
 0:288      Sequence
 0:288        move second child to first child (temp float)
 0:288          'r024' (temp float)
 0:288          dot-product (global float)
-0:288            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:288            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:288            'inF0' (in 4-component vector of float)
+0:288            'inF1' (in 4-component vector of float)
 0:289      Sequence
 0:289        move second child to first child (temp 4-component vector of float)
 0:289          'r025' (temp 4-component vector of float)
@@ -4076,38 +4091,38 @@ gl_FragCoord origin is upper left
 0:289              1.000000
 0:289            component-wise multiply (temp float)
 0:289              direct index (temp float)
-0:289                'inF0' (layout(location=0 ) in 4-component vector of float)
+0:289                'inF0' (in 4-component vector of float)
 0:289                Constant:
 0:289                  1 (const int)
 0:289              direct index (temp float)
-0:289                'inF1' (layout(location=1 ) in 4-component vector of float)
+0:289                'inF1' (in 4-component vector of float)
 0:289                Constant:
 0:289                  1 (const int)
 0:289            direct index (temp float)
-0:289              'inF0' (layout(location=0 ) in 4-component vector of float)
+0:289              'inF0' (in 4-component vector of float)
 0:289              Constant:
 0:289                2 (const int)
 0:289            direct index (temp float)
-0:289              'inF1' (layout(location=1 ) in 4-component vector of float)
+0:289              'inF1' (in 4-component vector of float)
 0:289              Constant:
 0:289                3 (const int)
 0:293      Sequence
 0:293        move second child to first child (temp 4-component vector of float)
 0:293          'r029' (temp 4-component vector of float)
 0:293          exp (global 4-component vector of float)
-0:293            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:293            'inF0' (in 4-component vector of float)
 0:294      Sequence
 0:294        move second child to first child (temp 4-component vector of float)
 0:294          'r030' (temp 4-component vector of float)
 0:294          exp2 (global 4-component vector of float)
-0:294            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:294            'inF0' (in 4-component vector of float)
 0:295      Sequence
 0:295        move second child to first child (temp 4-component vector of float)
 0:295          'r031' (temp 4-component vector of float)
 0:295          face-forward (global 4-component vector of float)
-0:295            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:295            'inF1' (layout(location=1 ) in 4-component vector of float)
-0:295            'inF2' (layout(location=2 ) in 4-component vector of float)
+0:295            'inF0' (in 4-component vector of float)
+0:295            'inF1' (in 4-component vector of float)
+0:295            'inF2' (in 4-component vector of float)
 0:296      Sequence
 0:296        move second child to first child (temp 4-component vector of uint)
 0:296          'r032' (temp 4-component vector of uint)
@@ -4130,122 +4145,122 @@ gl_FragCoord origin is upper left
 0:298        move second child to first child (temp 4-component vector of float)
 0:298          'r034' (temp 4-component vector of float)
 0:298          Floor (global 4-component vector of float)
-0:298            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:298            'inF0' (in 4-component vector of float)
 0:300      Sequence
 0:300        move second child to first child (temp 4-component vector of float)
 0:300          'r036' (temp 4-component vector of float)
 0:300          mod (global 4-component vector of float)
-0:300            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:300            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:300            'inF0' (in 4-component vector of float)
+0:300            'inF1' (in 4-component vector of float)
 0:301      Sequence
 0:301        move second child to first child (temp 4-component vector of float)
 0:301          'r037' (temp 4-component vector of float)
 0:301          Fraction (global 4-component vector of float)
-0:301            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:301            'inF0' (in 4-component vector of float)
 0:302      Sequence
 0:302        move second child to first child (temp 4-component vector of float)
 0:302          'r038' (temp 4-component vector of float)
 0:302          frexp (global 4-component vector of float)
-0:302            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:302            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:302            'inF0' (in 4-component vector of float)
+0:302            'inF1' (in 4-component vector of float)
 0:303      Sequence
 0:303        move second child to first child (temp 4-component vector of float)
 0:303          'r039' (temp 4-component vector of float)
 0:303          fwidth (global 4-component vector of float)
-0:303            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:303            'inF0' (in 4-component vector of float)
 0:304      Sequence
 0:304        move second child to first child (temp 4-component vector of bool)
 0:304          'r040' (temp 4-component vector of bool)
 0:304          isinf (global 4-component vector of bool)
-0:304            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:304            'inF0' (in 4-component vector of float)
 0:305      Sequence
 0:305        move second child to first child (temp 4-component vector of bool)
 0:305          'r041' (temp 4-component vector of bool)
 0:305          isnan (global 4-component vector of bool)
-0:305            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:305            'inF0' (in 4-component vector of float)
 0:306      Sequence
 0:306        move second child to first child (temp 4-component vector of float)
 0:306          'r042' (temp 4-component vector of float)
 0:306          ldexp (global 4-component vector of float)
-0:306            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:306            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:306            'inF0' (in 4-component vector of float)
+0:306            'inF1' (in 4-component vector of float)
 0:307      Sequence
 0:307        move second child to first child (temp 4-component vector of float)
 0:307          'r039a' (temp 4-component vector of float)
 0:307          mix (global 4-component vector of float)
-0:307            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:307            'inF1' (layout(location=1 ) in 4-component vector of float)
-0:307            'inF2' (layout(location=2 ) in 4-component vector of float)
+0:307            'inF0' (in 4-component vector of float)
+0:307            'inF1' (in 4-component vector of float)
+0:307            'inF2' (in 4-component vector of float)
 0:308      Sequence
 0:308        move second child to first child (temp float)
 0:308          'r043' (temp float)
 0:308          length (global float)
-0:308            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:308            'inF0' (in 4-component vector of float)
 0:309      Sequence
 0:309        move second child to first child (temp 4-component vector of float)
 0:309          'r044' (temp 4-component vector of float)
 0:309          log (global 4-component vector of float)
-0:309            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:309            'inF0' (in 4-component vector of float)
 0:310      Sequence
 0:310        move second child to first child (temp 4-component vector of float)
 0:310          'r045' (temp 4-component vector of float)
 0:310          vector-scale (temp 4-component vector of float)
 0:310            log2 (temp 4-component vector of float)
-0:310              'inF0' (layout(location=0 ) in 4-component vector of float)
+0:310              'inF0' (in 4-component vector of float)
 0:310            Constant:
 0:310              0.301030
 0:311      Sequence
 0:311        move second child to first child (temp 4-component vector of float)
 0:311          'r046' (temp 4-component vector of float)
 0:311          log2 (global 4-component vector of float)
-0:311            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:311            'inF0' (in 4-component vector of float)
 0:312      Sequence
 0:312        move second child to first child (temp 4-component vector of float)
 0:312          'r047' (temp 4-component vector of float)
 0:312          max (global 4-component vector of float)
-0:312            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:312            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:312            'inF0' (in 4-component vector of float)
+0:312            'inF1' (in 4-component vector of float)
 0:313      Sequence
 0:313        move second child to first child (temp 4-component vector of float)
 0:313          'r048' (temp 4-component vector of float)
 0:313          min (global 4-component vector of float)
-0:313            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:313            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:313            'inF0' (in 4-component vector of float)
+0:313            'inF1' (in 4-component vector of float)
 0:314      Sequence
 0:314        move second child to first child (temp 4-component vector of float)
 0:314          'r049' (temp 4-component vector of float)
 0:314          normalize (global 4-component vector of float)
-0:314            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:314            'inF0' (in 4-component vector of float)
 0:315      Sequence
 0:315        move second child to first child (temp 4-component vector of float)
 0:315          'r050' (temp 4-component vector of float)
 0:315          pow (global 4-component vector of float)
-0:315            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:315            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:315            'inF0' (in 4-component vector of float)
+0:315            'inF1' (in 4-component vector of float)
 0:316      Sequence
 0:316        move second child to first child (temp 4-component vector of float)
 0:316          'r051' (temp 4-component vector of float)
 0:316          radians (global 4-component vector of float)
-0:316            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:316            'inF0' (in 4-component vector of float)
 0:317      Sequence
 0:317        move second child to first child (temp 4-component vector of float)
 0:317          'r052' (temp 4-component vector of float)
 0:317          divide (temp 4-component vector of float)
 0:317            Constant:
 0:317              1.000000
-0:317            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:317            'inF0' (in 4-component vector of float)
 0:318      Sequence
 0:318        move second child to first child (temp 4-component vector of float)
 0:318          'r053' (temp 4-component vector of float)
 0:318          reflect (global 4-component vector of float)
-0:318            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:318            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:318            'inF0' (in 4-component vector of float)
+0:318            'inF1' (in 4-component vector of float)
 0:319      Sequence
 0:319        move second child to first child (temp 4-component vector of float)
 0:319          'r054' (temp 4-component vector of float)
 0:319          refract (global 4-component vector of float)
-0:319            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:319            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:319            'inF0' (in 4-component vector of float)
+0:319            'inF1' (in 4-component vector of float)
 0:319            Constant:
 0:319              2.000000
 0:320      Sequence
@@ -4261,17 +4276,17 @@ gl_FragCoord origin is upper left
 0:321        move second child to first child (temp 4-component vector of float)
 0:321          'r056' (temp 4-component vector of float)
 0:321          roundEven (global 4-component vector of float)
-0:321            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:321            'inF0' (in 4-component vector of float)
 0:322      Sequence
 0:322        move second child to first child (temp 4-component vector of float)
 0:322          'r057' (temp 4-component vector of float)
 0:322          inverse sqrt (global 4-component vector of float)
-0:322            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:322            'inF0' (in 4-component vector of float)
 0:323      Sequence
 0:323        move second child to first child (temp 4-component vector of float)
 0:323          'r058' (temp 4-component vector of float)
 0:323          clamp (temp 4-component vector of float)
-0:323            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:323            'inF0' (in 4-component vector of float)
 0:323            Constant:
 0:323              0.000000
 0:323            Constant:
@@ -4280,68 +4295,65 @@ gl_FragCoord origin is upper left
 0:324        move second child to first child (temp 4-component vector of float)
 0:324          'r059' (temp 4-component vector of float)
 0:324          Sign (global 4-component vector of float)
-0:324            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:324            'inF0' (in 4-component vector of float)
 0:325      Sequence
 0:325        move second child to first child (temp 4-component vector of float)
 0:325          'r060' (temp 4-component vector of float)
 0:325          sine (global 4-component vector of float)
-0:325            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:325            'inF0' (in 4-component vector of float)
 0:326      Sequence
 0:326        move second child to first child (temp 4-component vector of float)
-0:326          'inF1' (layout(location=1 ) in 4-component vector of float)
+0:326          'inF1' (in 4-component vector of float)
 0:326          sine (temp 4-component vector of float)
-0:326            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:326            'inF0' (in 4-component vector of float)
 0:326        move second child to first child (temp 4-component vector of float)
-0:326          'inF2' (layout(location=2 ) in 4-component vector of float)
+0:326          'inF2' (in 4-component vector of float)
 0:326          cosine (temp 4-component vector of float)
-0:326            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:326            'inF0' (in 4-component vector of float)
 0:327      Sequence
 0:327        move second child to first child (temp 4-component vector of float)
 0:327          'r061' (temp 4-component vector of float)
 0:327          hyp. sine (global 4-component vector of float)
-0:327            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:327            'inF0' (in 4-component vector of float)
 0:328      Sequence
 0:328        move second child to first child (temp 4-component vector of float)
 0:328          'r062' (temp 4-component vector of float)
 0:328          smoothstep (global 4-component vector of float)
-0:328            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:328            'inF1' (layout(location=1 ) in 4-component vector of float)
-0:328            'inF2' (layout(location=2 ) in 4-component vector of float)
+0:328            'inF0' (in 4-component vector of float)
+0:328            'inF1' (in 4-component vector of float)
+0:328            'inF2' (in 4-component vector of float)
 0:329      Sequence
 0:329        move second child to first child (temp 4-component vector of float)
 0:329          'r063' (temp 4-component vector of float)
 0:329          sqrt (global 4-component vector of float)
-0:329            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:329            'inF0' (in 4-component vector of float)
 0:330      Sequence
 0:330        move second child to first child (temp 4-component vector of float)
 0:330          'r064' (temp 4-component vector of float)
 0:330          step (global 4-component vector of float)
-0:330            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:330            'inF1' (layout(location=1 ) in 4-component vector of float)
+0:330            'inF0' (in 4-component vector of float)
+0:330            'inF1' (in 4-component vector of float)
 0:331      Sequence
 0:331        move second child to first child (temp 4-component vector of float)
 0:331          'r065' (temp 4-component vector of float)
 0:331          tangent (global 4-component vector of float)
-0:331            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:331            'inF0' (in 4-component vector of float)
 0:332      Sequence
 0:332        move second child to first child (temp 4-component vector of float)
 0:332          'r066' (temp 4-component vector of float)
 0:332          hyp. tangent (global 4-component vector of float)
-0:332            'inF0' (layout(location=0 ) in 4-component vector of float)
+0:332            'inF0' (in 4-component vector of float)
 0:334      Sequence
 0:334        move second child to first child (temp 4-component vector of float)
 0:334          'r067' (temp 4-component vector of float)
 0:334          trunc (global 4-component vector of float)
-0:334            'inF0' (layout(location=0 ) in 4-component vector of float)
-0:337      Sequence
-0:337        move second child to first child (temp 4-component vector of float)
-0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:337        Branch: Return
+0:334            'inF0' (in 4-component vector of float)
+0:337      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:?           4.000000
 0:401  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
 0:401    Function Parameters: 
 0:401      'inF0' (in 2X2 matrix of float)
@@ -5253,20 +5265,20 @@ gl_FragCoord origin is upper left
 0:443        move second child to first child (temp float)
 0:443          'r0' (temp float)
 0:443          component-wise multiply (temp float)
-0:443            'inF0' (in float)
 0:443            'inF1' (in float)
+0:443            'inF0' (in float)
 0:443      Sequence
 0:443        move second child to first child (temp 2-component vector of float)
 0:443          'r1' (temp 2-component vector of float)
 0:443          vector-scale (temp 2-component vector of float)
-0:443            'inFV0' (in 2-component vector of float)
 0:443            'inF0' (in float)
+0:443            'inFV0' (in 2-component vector of float)
 0:443      Sequence
 0:443        move second child to first child (temp 2-component vector of float)
 0:443          'r2' (temp 2-component vector of float)
 0:443          vector-scale (temp 2-component vector of float)
-0:443            'inF0' (in float)
 0:443            'inFV0' (in 2-component vector of float)
+0:443            'inF0' (in float)
 0:443      Sequence
 0:443        move second child to first child (temp float)
 0:443          'r3' (temp float)
@@ -5276,33 +5288,33 @@ gl_FragCoord origin is upper left
 0:443      Sequence
 0:443        move second child to first child (temp 2-component vector of float)
 0:443          'r4' (temp 2-component vector of float)
-0:443          matrix-times-vector (temp 2-component vector of float)
-0:443            'inFM0' (in 2X2 matrix of float)
+0:443          vector-times-matrix (temp 2-component vector of float)
 0:443            'inFV0' (in 2-component vector of float)
+0:443            'inFM0' (in 2X2 matrix of float)
 0:443      Sequence
 0:443        move second child to first child (temp 2-component vector of float)
 0:443          'r5' (temp 2-component vector of float)
-0:443          vector-times-matrix (temp 2-component vector of float)
-0:443            'inFV0' (in 2-component vector of float)
+0:443          matrix-times-vector (temp 2-component vector of float)
 0:443            'inFM0' (in 2X2 matrix of float)
+0:443            'inFV0' (in 2-component vector of float)
 0:443      Sequence
 0:443        move second child to first child (temp 2X2 matrix of float)
 0:443          'r6' (temp 2X2 matrix of float)
 0:443          matrix-scale (temp 2X2 matrix of float)
-0:443            'inFM0' (in 2X2 matrix of float)
 0:443            'inF0' (in float)
+0:443            'inFM0' (in 2X2 matrix of float)
 0:443      Sequence
 0:443        move second child to first child (temp 2X2 matrix of float)
 0:443          'r7' (temp 2X2 matrix of float)
 0:443          matrix-scale (temp 2X2 matrix of float)
-0:443            'inF0' (in float)
 0:443            'inFM0' (in 2X2 matrix of float)
+0:443            'inF0' (in float)
 0:443      Sequence
 0:443        move second child to first child (temp 2X2 matrix of float)
 0:443          'r8' (temp 2X2 matrix of float)
 0:443          matrix-multiply (temp 2X2 matrix of float)
-0:443            'inFM0' (in 2X2 matrix of float)
 0:443            'inFM1' (in 2X2 matrix of float)
+0:443            'inFM0' (in 2X2 matrix of float)
 0:449  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
 0:449    Function Parameters: 
 0:449      'inF0' (in float)
@@ -5316,20 +5328,20 @@ gl_FragCoord origin is upper left
 0:450        move second child to first child (temp float)
 0:450          'r0' (temp float)
 0:450          component-wise multiply (temp float)
-0:450            'inF0' (in float)
 0:450            'inF1' (in float)
+0:450            'inF0' (in float)
 0:450      Sequence
 0:450        move second child to first child (temp 3-component vector of float)
 0:450          'r1' (temp 3-component vector of float)
 0:450          vector-scale (temp 3-component vector of float)
-0:450            'inFV0' (in 3-component vector of float)
 0:450            'inF0' (in float)
+0:450            'inFV0' (in 3-component vector of float)
 0:450      Sequence
 0:450        move second child to first child (temp 3-component vector of float)
 0:450          'r2' (temp 3-component vector of float)
 0:450          vector-scale (temp 3-component vector of float)
-0:450            'inF0' (in float)
 0:450            'inFV0' (in 3-component vector of float)
+0:450            'inF0' (in float)
 0:450      Sequence
 0:450        move second child to first child (temp float)
 0:450          'r3' (temp float)
@@ -5339,33 +5351,33 @@ gl_FragCoord origin is upper left
 0:450      Sequence
 0:450        move second child to first child (temp 3-component vector of float)
 0:450          'r4' (temp 3-component vector of float)
-0:450          matrix-times-vector (temp 3-component vector of float)
-0:450            'inFM0' (in 3X3 matrix of float)
+0:450          vector-times-matrix (temp 3-component vector of float)
 0:450            'inFV0' (in 3-component vector of float)
+0:450            'inFM0' (in 3X3 matrix of float)
 0:450      Sequence
 0:450        move second child to first child (temp 3-component vector of float)
 0:450          'r5' (temp 3-component vector of float)
-0:450          vector-times-matrix (temp 3-component vector of float)
-0:450            'inFV0' (in 3-component vector of float)
+0:450          matrix-times-vector (temp 3-component vector of float)
 0:450            'inFM0' (in 3X3 matrix of float)
+0:450            'inFV0' (in 3-component vector of float)
 0:450      Sequence
 0:450        move second child to first child (temp 3X3 matrix of float)
 0:450          'r6' (temp 3X3 matrix of float)
 0:450          matrix-scale (temp 3X3 matrix of float)
-0:450            'inFM0' (in 3X3 matrix of float)
 0:450            'inF0' (in float)
+0:450            'inFM0' (in 3X3 matrix of float)
 0:450      Sequence
 0:450        move second child to first child (temp 3X3 matrix of float)
 0:450          'r7' (temp 3X3 matrix of float)
 0:450          matrix-scale (temp 3X3 matrix of float)
-0:450            'inF0' (in float)
 0:450            'inFM0' (in 3X3 matrix of float)
+0:450            'inF0' (in float)
 0:450      Sequence
 0:450        move second child to first child (temp 3X3 matrix of float)
 0:450          'r8' (temp 3X3 matrix of float)
 0:450          matrix-multiply (temp 3X3 matrix of float)
-0:450            'inFM0' (in 3X3 matrix of float)
 0:450            'inFM1' (in 3X3 matrix of float)
+0:450            'inFM0' (in 3X3 matrix of float)
 0:456  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
 0:456    Function Parameters: 
 0:456      'inF0' (in float)
@@ -5379,20 +5391,20 @@ gl_FragCoord origin is upper left
 0:457        move second child to first child (temp float)
 0:457          'r0' (temp float)
 0:457          component-wise multiply (temp float)
-0:457            'inF0' (in float)
 0:457            'inF1' (in float)
+0:457            'inF0' (in float)
 0:457      Sequence
 0:457        move second child to first child (temp 4-component vector of float)
 0:457          'r1' (temp 4-component vector of float)
 0:457          vector-scale (temp 4-component vector of float)
-0:457            'inFV0' (in 4-component vector of float)
 0:457            'inF0' (in float)
+0:457            'inFV0' (in 4-component vector of float)
 0:457      Sequence
 0:457        move second child to first child (temp 4-component vector of float)
 0:457          'r2' (temp 4-component vector of float)
 0:457          vector-scale (temp 4-component vector of float)
-0:457            'inF0' (in float)
 0:457            'inFV0' (in 4-component vector of float)
+0:457            'inF0' (in float)
 0:457      Sequence
 0:457        move second child to first child (temp float)
 0:457          'r3' (temp float)
@@ -5402,75 +5414,75 @@ gl_FragCoord origin is upper left
 0:457      Sequence
 0:457        move second child to first child (temp 4-component vector of float)
 0:457          'r4' (temp 4-component vector of float)
-0:457          matrix-times-vector (temp 4-component vector of float)
-0:457            'inFM0' (in 4X4 matrix of float)
+0:457          vector-times-matrix (temp 4-component vector of float)
 0:457            'inFV0' (in 4-component vector of float)
+0:457            'inFM0' (in 4X4 matrix of float)
 0:457      Sequence
 0:457        move second child to first child (temp 4-component vector of float)
 0:457          'r5' (temp 4-component vector of float)
-0:457          vector-times-matrix (temp 4-component vector of float)
-0:457            'inFV0' (in 4-component vector of float)
+0:457          matrix-times-vector (temp 4-component vector of float)
 0:457            'inFM0' (in 4X4 matrix of float)
+0:457            'inFV0' (in 4-component vector of float)
 0:457      Sequence
 0:457        move second child to first child (temp 4X4 matrix of float)
 0:457          'r6' (temp 4X4 matrix of float)
 0:457          matrix-scale (temp 4X4 matrix of float)
-0:457            'inFM0' (in 4X4 matrix of float)
 0:457            'inF0' (in float)
+0:457            'inFM0' (in 4X4 matrix of float)
 0:457      Sequence
 0:457        move second child to first child (temp 4X4 matrix of float)
 0:457          'r7' (temp 4X4 matrix of float)
 0:457          matrix-scale (temp 4X4 matrix of float)
-0:457            'inF0' (in float)
 0:457            'inFM0' (in 4X4 matrix of float)
+0:457            'inF0' (in float)
 0:457      Sequence
 0:457        move second child to first child (temp 4X4 matrix of float)
 0:457          'r8' (temp 4X4 matrix of float)
 0:457          matrix-multiply (temp 4X4 matrix of float)
-0:457            'inFM0' (in 4X4 matrix of float)
 0:457            'inFM1' (in 4X4 matrix of float)
-0:466  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void)
+0:457            'inFM0' (in 4X4 matrix of float)
+0:466  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
 0:466    Function Parameters: 
 0:466      'inF0' (in float)
 0:466      'inF1' (in float)
 0:466      'inFV2' (in 2-component vector of float)
 0:466      'inFV3' (in 3-component vector of float)
-0:466      'inFM2x3' (in 3X2 matrix of float)
-0:466      'inFM3x2' (in 2X3 matrix of float)
+0:466      'inFM2x3' (in 2X3 matrix of float)
+0:466      'inFM3x2' (in 3X2 matrix of float)
 0:466      'inFM3x3' (in 3X3 matrix of float)
-0:466      'inFM3x4' (in 4X3 matrix of float)
-0:466      'inFM2x4' (in 4X2 matrix of float)
+0:466      'inFM3x4' (in 3X4 matrix of float)
+0:466      'inFM2x4' (in 2X4 matrix of float)
 0:?     Sequence
 0:467      Sequence
 0:467        move second child to first child (temp float)
 0:467          'r00' (temp float)
 0:467          component-wise multiply (temp float)
-0:467            'inF0' (in float)
 0:467            'inF1' (in float)
+0:467            'inF0' (in float)
 0:468      Sequence
 0:468        move second child to first child (temp 2-component vector of float)
 0:468          'r01' (temp 2-component vector of float)
 0:468          vector-scale (temp 2-component vector of float)
-0:468            'inFV2' (in 2-component vector of float)
 0:468            'inF0' (in float)
+0:468            'inFV2' (in 2-component vector of float)
 0:469      Sequence
 0:469        move second child to first child (temp 3-component vector of float)
 0:469          'r02' (temp 3-component vector of float)
 0:469          vector-scale (temp 3-component vector of float)
-0:469            'inFV3' (in 3-component vector of float)
 0:469            'inF0' (in float)
+0:469            'inFV3' (in 3-component vector of float)
 0:470      Sequence
 0:470        move second child to first child (temp 2-component vector of float)
 0:470          'r03' (temp 2-component vector of float)
 0:470          vector-scale (temp 2-component vector of float)
-0:470            'inF0' (in float)
 0:470            'inFV2' (in 2-component vector of float)
+0:470            'inF0' (in float)
 0:471      Sequence
 0:471        move second child to first child (temp 3-component vector of float)
 0:471          'r04' (temp 3-component vector of float)
 0:471          vector-scale (temp 3-component vector of float)
-0:471            'inF0' (in float)
 0:471            'inFV3' (in 3-component vector of float)
+0:471            'inF0' (in float)
 0:472      Sequence
 0:472        move second child to first child (temp float)
 0:472          'r05' (temp float)
@@ -5486,63 +5498,81 @@ gl_FragCoord origin is upper left
 0:474      Sequence
 0:474        move second child to first child (temp 3-component vector of float)
 0:474          'r07' (temp 3-component vector of float)
-0:474          vector-times-matrix (temp 3-component vector of float)
+0:474          matrix-times-vector (temp 3-component vector of float)
+0:474            'inFM2x3' (in 2X3 matrix of float)
 0:474            'inFV2' (in 2-component vector of float)
-0:474            'inFM2x3' (in 3X2 matrix of float)
 0:475      Sequence
 0:475        move second child to first child (temp 2-component vector of float)
 0:475          'r08' (temp 2-component vector of float)
-0:475          vector-times-matrix (temp 2-component vector of float)
+0:475          matrix-times-vector (temp 2-component vector of float)
+0:475            'inFM3x2' (in 3X2 matrix of float)
 0:475            'inFV3' (in 3-component vector of float)
-0:475            'inFM3x2' (in 2X3 matrix of float)
 0:476      Sequence
 0:476        move second child to first child (temp 2-component vector of float)
 0:476          'r09' (temp 2-component vector of float)
-0:476          matrix-times-vector (temp 2-component vector of float)
-0:476            'inFM2x3' (in 3X2 matrix of float)
+0:476          vector-times-matrix (temp 2-component vector of float)
 0:476            'inFV3' (in 3-component vector of float)
+0:476            'inFM2x3' (in 2X3 matrix of float)
 0:477      Sequence
 0:477        move second child to first child (temp 3-component vector of float)
 0:477          'r10' (temp 3-component vector of float)
-0:477          matrix-times-vector (temp 3-component vector of float)
-0:477            'inFM3x2' (in 2X3 matrix of float)
+0:477          vector-times-matrix (temp 3-component vector of float)
 0:477            'inFV2' (in 2-component vector of float)
+0:477            'inFM3x2' (in 3X2 matrix of float)
 0:478      Sequence
-0:478        move second child to first child (temp 3X2 matrix of float)
-0:478          'r11' (temp 3X2 matrix of float)
-0:478          matrix-scale (temp 3X2 matrix of float)
-0:478            'inFM2x3' (in 3X2 matrix of float)
+0:478        move second child to first child (temp 2X3 matrix of float)
+0:478          'r11' (temp 2X3 matrix of float)
+0:478          matrix-scale (temp 2X3 matrix of float)
 0:478            'inF0' (in float)
+0:478            'inFM2x3' (in 2X3 matrix of float)
 0:479      Sequence
-0:479        move second child to first child (temp 2X3 matrix of float)
-0:479          'r12' (temp 2X3 matrix of float)
-0:479          matrix-scale (temp 2X3 matrix of float)
-0:479            'inFM3x2' (in 2X3 matrix of float)
+0:479        move second child to first child (temp 3X2 matrix of float)
+0:479          'r12' (temp 3X2 matrix of float)
+0:479          matrix-scale (temp 3X2 matrix of float)
 0:479            'inF0' (in float)
+0:479            'inFM3x2' (in 3X2 matrix of float)
 0:480      Sequence
 0:480        move second child to first child (temp 2X2 matrix of float)
 0:480          'r13' (temp 2X2 matrix of float)
 0:480          matrix-multiply (temp 2X2 matrix of float)
-0:480            'inFM2x3' (in 3X2 matrix of float)
-0:480            'inFM3x2' (in 2X3 matrix of float)
+0:480            'inFM3x2' (in 3X2 matrix of float)
+0:480            'inFM2x3' (in 2X3 matrix of float)
 0:481      Sequence
-0:481        move second child to first child (temp 3X2 matrix of float)
-0:481          'r14' (temp 3X2 matrix of float)
-0:481          matrix-multiply (temp 3X2 matrix of float)
-0:481            'inFM2x3' (in 3X2 matrix of float)
+0:481        move second child to first child (temp 2X3 matrix of float)
+0:481          'r14' (temp 2X3 matrix of float)
+0:481          matrix-multiply (temp 2X3 matrix of float)
 0:481            'inFM3x3' (in 3X3 matrix of float)
+0:481            'inFM2x3' (in 2X3 matrix of float)
 0:482      Sequence
-0:482        move second child to first child (temp 4X2 matrix of float)
-0:482          'r15' (temp 4X2 matrix of float)
-0:482          matrix-multiply (temp 4X2 matrix of float)
-0:482            'inFM2x3' (in 3X2 matrix of float)
-0:482            'inFM3x4' (in 4X3 matrix of float)
+0:482        move second child to first child (temp 2X4 matrix of float)
+0:482          'r15' (temp 2X4 matrix of float)
+0:482          matrix-multiply (temp 2X4 matrix of float)
+0:482            'inFM3x4' (in 3X4 matrix of float)
+0:482            'inFM2x3' (in 2X3 matrix of float)
 0:483      Sequence
-0:483        move second child to first child (temp 4X3 matrix of float)
-0:483          'r16' (temp 4X3 matrix of float)
-0:483          matrix-multiply (temp 4X3 matrix of float)
-0:483            'inFM3x2' (in 2X3 matrix of float)
-0:483            'inFM2x4' (in 4X2 matrix of float)
+0:483        move second child to first child (temp 3X4 matrix of float)
+0:483          'r16' (temp 3X4 matrix of float)
+0:483          matrix-multiply (temp 3X4 matrix of float)
+0:483            'inFM2x4' (in 2X4 matrix of float)
+0:483            'inFM3x2' (in 3X2 matrix of float)
+0:489  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:489    Function Parameters: 
+0:?     Sequence
+0:491      move second child to first child (temp 4-component vector of float)
+0:491        color: direct index for structure (temp 4-component vector of float)
+0:491          'ps_output' (temp structure{temp 4-component vector of float color})
+0:491          Constant:
+0:491            0 (const int)
+0:491        Constant:
+0:491          1.000000
+0:491          1.000000
+0:491          1.000000
+0:491          1.000000
+0:492      Sequence
+0:492        move second child to first child (temp structure{temp 4-component vector of float color})
+0:?           '@entryPointOutput' (layout(location=0 ) out structure{temp 4-component vector of float color})
+0:492          'ps_output' (temp structure{temp 4-component vector of float color})
+0:492        Branch: Return
 0:?   Linker Objects
 0:?     'gs_ua' (global uint)
 0:?     'gs_ub' (global uint)
@@ -5559,15 +5589,15 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 1814
+// Id's are bound by 1824
 
                               Capability Shader
                               Capability DerivativeControl
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 810 837 845 854 1060
+                              EntryPoint Fragment 4  "main" 1805
                               ExecutionMode 4 OriginUpperLeft
-                              Name 4  "PixelShaderFunction"
+                              Name 4  "main"
                               Name 16  "PixelShaderFunctionS(f1;f1;f1;u1;u1;"
                               Name 11  "inF0"
                               Name 12  "inF1"
@@ -5590,306 +5620,307 @@ gl_FragCoord origin is upper left
                               Name 43  "inF2"
                               Name 44  "inU0"
                               Name 45  "inU1"
-                              Name 54  "PixelShaderFunction2x2(mf22;mf22;mf22;"
-                              Name 51  "inF0"
-                              Name 52  "inF1"
-                              Name 53  "inF2"
-                              Name 62  "PixelShaderFunction3x3(mf33;mf33;mf33;"
-                              Name 59  "inF0"
-                              Name 60  "inF1"
-                              Name 61  "inF2"
-                              Name 71  "PixelShaderFunction4x4(mf44;mf44;mf44;"
-                              Name 68  "inF0"
-                              Name 69  "inF1"
-                              Name 70  "inF2"
-                              Name 80  "TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;"
-                              Name 74  "inF0"
-                              Name 75  "inF1"
-                              Name 76  "inFV0"
-                              Name 77  "inFV1"
-                              Name 78  "inFM0"
-                              Name 79  "inFM1"
-                              Name 89  "TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;"
-                              Name 83  "inF0"
-                              Name 84  "inF1"
-                              Name 85  "inFV0"
-                              Name 86  "inFV1"
-                              Name 87  "inFM0"
-                              Name 88  "inFM1"
-                              Name 99  "TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;"
-                              Name 93  "inF0"
-                              Name 94  "inF1"
-                              Name 95  "inFV0"
-                              Name 96  "inFV1"
-                              Name 97  "inFM0"
-                              Name 98  "inFM1"
-                              Name 119  "TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42;"
-                              Name 110  "inF0"
-                              Name 111  "inF1"
-                              Name 112  "inFV2"
-                              Name 113  "inFV3"
-                              Name 114  "inFM2x3"
-                              Name 115  "inFM3x2"
-                              Name 116  "inFM3x3"
-                              Name 117  "inFM3x4"
-                              Name 118  "inFM2x4"
-                              Name 123  "r000"
-                              Name 126  "r001"
-                              Name 129  "r002"
-                              Name 132  "r003"
-                              Name 135  "r004"
-                              Name 140  "r005"
-                              Name 143  "r006"
-                              Name 146  "r007"
-                              Name 149  "r009"
-                              Name 152  "r010"
-                              Name 156  "r011"
-                              Name 159  "r012"
-                              Name 170  "r014"
-                              Name 173  "r015"
-                              Name 176  "r016"
-                              Name 179  "r017"
-                              Name 182  "r018"
-                              Name 185  "r019"
-                              Name 188  "r020"
-                              Name 191  "r021"
-                              Name 194  "r022"
-                              Name 197  "r023"
-                              Name 200  "r027"
-                              Name 203  "r028"
-                              Name 206  "r029"
-                              Name 210  "r030"
-                              Name 213  "r031"
-                              Name 216  "r033"
-                              Name 220  "r034"
-                              Name 223  "r035"
-                              Name 225  "ResType"
-                              Name 229  "r036"
-                              Name 232  "r037"
-                              Name 235  "r038"
-                              Name 238  "r039"
-                              Name 242  "r039a"
-                              Name 247  "r040"
-                              Name 250  "r041"
-                              Name 255  "r042"
-                              Name 258  "r043"
-                              Name 262  "r044"
-                              Name 266  "r045"
-                              Name 270  "r046"
-                              Name 273  "r047"
-                              Name 277  "r048"
-                              Name 280  "r049"
-                              Name 283  "r050"
-                              Name 286  "r051"
-                              Name 289  "r052"
-                              Name 292  "r053"
-                              Name 299  "r055"
-                              Name 302  "r056"
-                              Name 307  "r057"
-                              Name 310  "r058"
-                              Name 314  "r059"
-                              Name 317  "r060"
-                              Name 320  "r061"
-                              Name 327  "r000"
-                              Name 330  "r001"
-                              Name 333  "r002"
-                              Name 336  "r003"
-                              Name 339  "r004"
-                              Name 344  "r005"
-                              Name 347  "r006"
-                              Name 350  "r007"
-                              Name 353  "r009"
-                              Name 356  "r010"
-                              Name 360  "r011"
-                              Name 363  "r012"
-                              Name 376  "r013"
-                              Name 379  "r015"
-                              Name 382  "r016"
-                              Name 386  "r017"
-                              Name 389  "r018"
-                              Name 392  "r019"
-                              Name 395  "r020"
-                              Name 398  "r021"
-                              Name 401  "r022"
-                              Name 404  "r023"
-                              Name 407  "r026"
-                              Name 411  "r027"
-                              Name 415  "r028"
-                              Name 418  "r029"
-                              Name 421  "r030"
-                              Name 426  "r031"
-                              Name 430  "r032"
-                              Name 432  "r033"
-                              Name 435  "r035"
-                              Name 439  "r036"
-                              Name 442  "r037"
-                              Name 444  "ResType"
-                              Name 448  "r038"
-                              Name 452  "r039"
-                              Name 455  "r040"
-                              Name 458  "r041"
-                              Name 462  "r039a"
-                              Name 467  "r042"
-                              Name 470  "r043"
-                              Name 473  "r044"
-                              Name 477  "r045"
-                              Name 480  "r046"
-                              Name 484  "r047"
-                              Name 488  "r048"
-                              Name 491  "r049"
-                              Name 495  "r050"
-                              Name 498  "r051"
-                              Name 502  "r052"
-                              Name 506  "r053"
-                              Name 511  "r054"
-                              Name 515  "r055"
-                              Name 518  "r056"
-                              Name 521  "r057"
-                              Name 526  "r058"
-                              Name 529  "r059"
-                              Name 536  "r060"
-                              Name 539  "r061"
-                              Name 544  "r062"
-                              Name 547  "r063"
-                              Name 551  "r064"
-                              Name 554  "r065"
-                              Name 557  "r066"
-                              Name 563  "r000"
-                              Name 566  "r001"
-                              Name 569  "r002"
-                              Name 572  "r003"
-                              Name 575  "r004"
-                              Name 580  "r005"
-                              Name 583  "r006"
-                              Name 586  "r007"
-                              Name 589  "r009"
-                              Name 592  "r010"
-                              Name 596  "r011"
-                              Name 599  "r012"
-                              Name 612  "r013"
-                              Name 615  "r014"
-                              Name 618  "r015"
-                              Name 622  "r016"
-                              Name 626  "r017"
-                              Name 629  "r018"
-                              Name 632  "r019"
-                              Name 635  "r020"
-                              Name 638  "r021"
-                              Name 641  "r022"
-                              Name 644  "r023"
-                              Name 647  "r024"
-                              Name 651  "r025"
-                              Name 655  "r029"
-                              Name 658  "r030"
-                              Name 661  "r031"
-                              Name 666  "r032"
-                              Name 670  "r033"
-                              Name 672  "r034"
-                              Name 675  "r036"
-                              Name 679  "r037"
-                              Name 682  "r038"
-                              Name 684  "ResType"
-                              Name 688  "r039"
-                              Name 692  "r040"
-                              Name 695  "r041"
-                              Name 698  "r042"
-                              Name 702  "r039a"
-                              Name 707  "r039b"
-                              Name 713  "r043"
-                              Name 716  "r044"
-                              Name 719  "r045"
-                              Name 723  "r046"
-                              Name 726  "r047"
-                              Name 730  "r048"
-                              Name 734  "r049"
-                              Name 737  "r050"
-                              Name 741  "r051"
-                              Name 744  "r052"
-                              Name 748  "r053"
-                              Name 752  "r054"
-                              Name 756  "r055"
-                              Name 759  "r056"
-                              Name 762  "r057"
-                              Name 765  "r058"
-                              Name 770  "r059"
-                              Name 773  "r060"
-                              Name 780  "r061"
-                              Name 783  "r062"
-                              Name 788  "r063"
-                              Name 791  "r064"
-                              Name 795  "r065"
-                              Name 798  "r066"
-                              Name 801  "r067"
-                              Name 808  "r000"
-                              Name 810  "inF0"
-                              Name 813  "r001"
-                              Name 816  "r002"
-                              Name 819  "r003"
-                              Name 822  "r004"
-                              Name 827  "r005"
-                              Name 832  "r006"
-                              Name 835  "r007"
-                              Name 837  "inU0"
-                              Name 840  "r009"
-                              Name 843  "r010"
-                              Name 845  "inF1"
-                              Name 848  "r011"
-                              Name 851  "r012"
-                              Name 854  "inF2"
-                              Name 865  "r013"
-                              Name 868  "r014"
-                              Name 871  "r015"
-                              Name 874  "r016"
-                              Name 877  "r017"
-                              Name 880  "r018"
-                              Name 883  "r019"
-                              Name 886  "r020"
-                              Name 889  "r021"
-                              Name 892  "r022"
-                              Name 895  "r023"
-                              Name 899  "r024"
-                              Name 903  "r025"
-                              Name 915  "r029"
-                              Name 918  "r030"
-                              Name 921  "r031"
-                              Name 926  "r032"
-                              Name 931  "r033"
-                              Name 933  "r034"
-                              Name 936  "r036"
-                              Name 940  "r037"
-                              Name 943  "r038"
-                              Name 945  "ResType"
-                              Name 949  "r039"
-                              Name 953  "r040"
-                              Name 956  "r041"
-                              Name 959  "r042"
-                              Name 963  "r039a"
-                              Name 968  "r043"
-                              Name 971  "r044"
-                              Name 974  "r045"
-                              Name 978  "r046"
-                              Name 981  "r047"
-                              Name 985  "r048"
-                              Name 989  "r049"
-                              Name 992  "r050"
-                              Name 996  "r051"
-                              Name 999  "r052"
-                              Name 1003  "r053"
-                              Name 1007  "r054"
-                              Name 1011  "r055"
-                              Name 1014  "r056"
-                              Name 1017  "r057"
-                              Name 1020  "r058"
-                              Name 1025  "r059"
-                              Name 1028  "r060"
-                              Name 1035  "r061"
-                              Name 1038  "r062"
-                              Name 1043  "r063"
-                              Name 1046  "r064"
-                              Name 1050  "r065"
-                              Name 1053  "r066"
-                              Name 1056  "r067"
-                              Name 1060  "@entryPointOutput"
+                              Name 58  "PixelShaderFunction(vf4;vf4;vf4;vu4;vu4;"
+                              Name 53  "inF0"
+                              Name 54  "inF1"
+                              Name 55  "inF2"
+                              Name 56  "inU0"
+                              Name 57  "inU1"
+                              Name 66  "PixelShaderFunction2x2(mf22;mf22;mf22;"
+                              Name 63  "inF0"
+                              Name 64  "inF1"
+                              Name 65  "inF2"
+                              Name 74  "PixelShaderFunction3x3(mf33;mf33;mf33;"
+                              Name 71  "inF0"
+                              Name 72  "inF1"
+                              Name 73  "inF2"
+                              Name 82  "PixelShaderFunction4x4(mf44;mf44;mf44;"
+                              Name 79  "inF0"
+                              Name 80  "inF1"
+                              Name 81  "inF2"
+                              Name 91  "TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;"
+                              Name 85  "inF0"
+                              Name 86  "inF1"
+                              Name 87  "inFV0"
+                              Name 88  "inFV1"
+                              Name 89  "inFM0"
+                              Name 90  "inFM1"
+                              Name 100  "TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;"
+                              Name 94  "inF0"
+                              Name 95  "inF1"
+                              Name 96  "inFV0"
+                              Name 97  "inFV1"
+                              Name 98  "inFM0"
+                              Name 99  "inFM1"
+                              Name 109  "TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;"
+                              Name 103  "inF0"
+                              Name 104  "inF1"
+                              Name 105  "inFV0"
+                              Name 106  "inFV1"
+                              Name 107  "inFM0"
+                              Name 108  "inFM1"
+                              Name 129  "TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;"
+                              Name 120  "inF0"
+                              Name 121  "inF1"
+                              Name 122  "inFV2"
+                              Name 123  "inFV3"
+                              Name 124  "inFM2x3"
+                              Name 125  "inFM3x2"
+                              Name 126  "inFM3x3"
+                              Name 127  "inFM3x4"
+                              Name 128  "inFM2x4"
+                              Name 133  "r000"
+                              Name 136  "r001"
+                              Name 139  "r002"
+                              Name 142  "r003"
+                              Name 145  "r004"
+                              Name 150  "r005"
+                              Name 153  "r006"
+                              Name 156  "r007"
+                              Name 159  "r009"
+                              Name 162  "r010"
+                              Name 166  "r011"
+                              Name 169  "r012"
+                              Name 180  "r014"
+                              Name 183  "r015"
+                              Name 186  "r016"
+                              Name 189  "r017"
+                              Name 192  "r018"
+                              Name 195  "r019"
+                              Name 198  "r020"
+                              Name 201  "r021"
+                              Name 204  "r022"
+                              Name 207  "r023"
+                              Name 210  "r027"
+                              Name 213  "r028"
+                              Name 216  "r029"
+                              Name 220  "r030"
+                              Name 223  "r031"
+                              Name 226  "r033"
+                              Name 230  "r034"
+                              Name 233  "r035"
+                              Name 235  "ResType"
+                              Name 239  "r036"
+                              Name 242  "r037"
+                              Name 245  "r038"
+                              Name 248  "r039"
+                              Name 252  "r039a"
+                              Name 257  "r040"
+                              Name 260  "r041"
+                              Name 265  "r042"
+                              Name 268  "r043"
+                              Name 272  "r044"
+                              Name 276  "r045"
+                              Name 280  "r046"
+                              Name 283  "r047"
+                              Name 287  "r048"
+                              Name 290  "r049"
+                              Name 293  "r050"
+                              Name 296  "r051"
+                              Name 299  "r052"
+                              Name 302  "r053"
+                              Name 309  "r055"
+                              Name 312  "r056"
+                              Name 317  "r057"
+                              Name 320  "r058"
+                              Name 324  "r059"
+                              Name 327  "r060"
+                              Name 330  "r061"
+                              Name 337  "r000"
+                              Name 340  "r001"
+                              Name 343  "r002"
+                              Name 346  "r003"
+                              Name 349  "r004"
+                              Name 354  "r005"
+                              Name 357  "r006"
+                              Name 360  "r007"
+                              Name 363  "r009"
+                              Name 366  "r010"
+                              Name 370  "r011"
+                              Name 373  "r012"
+                              Name 386  "r013"
+                              Name 389  "r015"
+                              Name 392  "r016"
+                              Name 396  "r017"
+                              Name 399  "r018"
+                              Name 402  "r019"
+                              Name 405  "r020"
+                              Name 408  "r021"
+                              Name 411  "r022"
+                              Name 414  "r023"
+                              Name 417  "r026"
+                              Name 421  "r027"
+                              Name 425  "r028"
+                              Name 428  "r029"
+                              Name 431  "r030"
+                              Name 436  "r031"
+                              Name 440  "r032"
+                              Name 442  "r033"
+                              Name 445  "r035"
+                              Name 449  "r036"
+                              Name 452  "r037"
+                              Name 454  "ResType"
+                              Name 458  "r038"
+                              Name 462  "r039"
+                              Name 465  "r040"
+                              Name 468  "r041"
+                              Name 472  "r039a"
+                              Name 477  "r042"
+                              Name 480  "r043"
+                              Name 483  "r044"
+                              Name 487  "r045"
+                              Name 490  "r046"
+                              Name 494  "r047"
+                              Name 498  "r048"
+                              Name 501  "r049"
+                              Name 505  "r050"
+                              Name 508  "r051"
+                              Name 512  "r052"
+                              Name 516  "r053"
+                              Name 521  "r054"
+                              Name 525  "r055"
+                              Name 528  "r056"
+                              Name 531  "r057"
+                              Name 536  "r058"
+                              Name 539  "r059"
+                              Name 546  "r060"
+                              Name 549  "r061"
+                              Name 554  "r062"
+                              Name 557  "r063"
+                              Name 561  "r064"
+                              Name 564  "r065"
+                              Name 567  "r066"
+                              Name 573  "r000"
+                              Name 576  "r001"
+                              Name 579  "r002"
+                              Name 582  "r003"
+                              Name 585  "r004"
+                              Name 590  "r005"
+                              Name 593  "r006"
+                              Name 596  "r007"
+                              Name 599  "r009"
+                              Name 602  "r010"
+                              Name 606  "r011"
+                              Name 609  "r012"
+                              Name 622  "r013"
+                              Name 625  "r014"
+                              Name 628  "r015"
+                              Name 632  "r016"
+                              Name 636  "r017"
+                              Name 639  "r018"
+                              Name 642  "r019"
+                              Name 645  "r020"
+                              Name 648  "r021"
+                              Name 651  "r022"
+                              Name 654  "r023"
+                              Name 657  "r024"
+                              Name 661  "r025"
+                              Name 665  "r029"
+                              Name 668  "r030"
+                              Name 671  "r031"
+                              Name 676  "r032"
+                              Name 680  "r033"
+                              Name 682  "r034"
+                              Name 685  "r036"
+                              Name 689  "r037"
+                              Name 692  "r038"
+                              Name 694  "ResType"
+                              Name 698  "r039"
+                              Name 702  "r040"
+                              Name 705  "r041"
+                              Name 708  "r042"
+                              Name 712  "r039a"
+                              Name 717  "r039b"
+                              Name 723  "r043"
+                              Name 726  "r044"
+                              Name 729  "r045"
+                              Name 733  "r046"
+                              Name 736  "r047"
+                              Name 740  "r048"
+                              Name 744  "r049"
+                              Name 747  "r050"
+                              Name 751  "r051"
+                              Name 754  "r052"
+                              Name 758  "r053"
+                              Name 762  "r054"
+                              Name 766  "r055"
+                              Name 769  "r056"
+                              Name 772  "r057"
+                              Name 775  "r058"
+                              Name 780  "r059"
+                              Name 783  "r060"
+                              Name 790  "r061"
+                              Name 793  "r062"
+                              Name 798  "r063"
+                              Name 801  "r064"
+                              Name 805  "r065"
+                              Name 808  "r066"
+                              Name 811  "r067"
+                              Name 818  "r000"
+                              Name 821  "r001"
+                              Name 824  "r002"
+                              Name 827  "r003"
+                              Name 830  "r004"
+                              Name 835  "r005"
+                              Name 838  "r006"
+                              Name 841  "r007"
+                              Name 844  "r009"
+                              Name 847  "r010"
+                              Name 851  "r011"
+                              Name 854  "r012"
+                              Name 867  "r013"
+                              Name 870  "r014"
+                              Name 873  "r015"
+                              Name 876  "r016"
+                              Name 879  "r017"
+                              Name 882  "r018"
+                              Name 885  "r019"
+                              Name 888  "r020"
+                              Name 891  "r021"
+                              Name 894  "r022"
+                              Name 897  "r023"
+                              Name 901  "r024"
+                              Name 905  "r025"
+                              Name 916  "r029"
+                              Name 919  "r030"
+                              Name 922  "r031"
+                              Name 927  "r032"
+                              Name 932  "r033"
+                              Name 934  "r034"
+                              Name 937  "r036"
+                              Name 941  "r037"
+                              Name 944  "r038"
+                              Name 946  "ResType"
+                              Name 950  "r039"
+                              Name 954  "r040"
+                              Name 957  "r041"
+                              Name 960  "r042"
+                              Name 964  "r039a"
+                              Name 969  "r043"
+                              Name 972  "r044"
+                              Name 975  "r045"
+                              Name 979  "r046"
+                              Name 982  "r047"
+                              Name 986  "r048"
+                              Name 990  "r049"
+                              Name 993  "r050"
+                              Name 997  "r051"
+                              Name 1000  "r052"
+                              Name 1004  "r053"
+                              Name 1008  "r054"
+                              Name 1012  "r055"
+                              Name 1015  "r056"
+                              Name 1018  "r057"
+                              Name 1021  "r058"
+                              Name 1026  "r059"
+                              Name 1029  "r060"
+                              Name 1036  "r061"
+                              Name 1039  "r062"
+                              Name 1044  "r063"
+                              Name 1047  "r064"
+                              Name 1051  "r065"
+                              Name 1054  "r066"
+                              Name 1057  "r067"
                               Name 1064  "r000"
                               Name 1067  "r001"
                               Name 1072  "r003"
@@ -6075,23 +6106,23 @@ gl_FragCoord origin is upper left
                               Name 1786  "r14"
                               Name 1790  "r15"
                               Name 1794  "r16"
-                              Name 1799  "gs_ua"
-                              Name 1800  "gs_ub"
-                              Name 1801  "gs_uc"
-                              Name 1803  "gs_ua2"
-                              Name 1804  "gs_ub2"
-                              Name 1805  "gs_uc2"
-                              Name 1807  "gs_ua3"
-                              Name 1808  "gs_ub3"
-                              Name 1809  "gs_uc3"
-                              Name 1811  "gs_ua4"
-                              Name 1812  "gs_ub4"
-                              Name 1813  "gs_uc4"
-                              Decorate 810(inF0) Location 0
-                              Decorate 837(inU0) Location 3
-                              Decorate 845(inF1) Location 1
-                              Decorate 854(inF2) Location 2
-                              Decorate 1060(@entryPointOutput) Location 0
+                              Name 1798  "PS_OUTPUT"
+                              MemberName 1798(PS_OUTPUT) 0  "color"
+                              Name 1800  "ps_output"
+                              Name 1805  "@entryPointOutput"
+                              Name 1809  "gs_ua"
+                              Name 1810  "gs_ub"
+                              Name 1811  "gs_uc"
+                              Name 1813  "gs_ua2"
+                              Name 1814  "gs_ub2"
+                              Name 1815  "gs_uc2"
+                              Name 1817  "gs_ua3"
+                              Name 1818  "gs_ub3"
+                              Name 1819  "gs_uc3"
+                              Name 1821  "gs_ua4"
+                              Name 1822  "gs_ub4"
+                              Name 1823  "gs_uc4"
+                              Decorate 1805(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -6110,426 +6141,128 @@ gl_FragCoord origin is upper left
               38:             TypeVector 8(int) 3
               39:             TypePointer Function 38(ivec3)
               40:             TypeFunction 36(fvec3) 37(ptr) 37(ptr) 37(ptr) 39(ptr) 39(ptr)
-              48:             TypeMatrix 24(fvec2) 2
-              49:             TypePointer Function 48
-              50:             TypeFunction 48 49(ptr) 49(ptr) 49(ptr)
-              56:             TypeMatrix 36(fvec3) 3
-              57:             TypePointer Function 56
-              58:             TypeFunction 56 57(ptr) 57(ptr) 57(ptr)
-              64:             TypeVector 6(float) 4
-              65:             TypeMatrix 64(fvec4) 4
-              66:             TypePointer Function 65
-              67:             TypeFunction 65 66(ptr) 66(ptr) 66(ptr)
-              73:             TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 25(ptr) 49(ptr) 49(ptr)
-              82:             TypeFunction 2 7(ptr) 7(ptr) 37(ptr) 37(ptr) 57(ptr) 57(ptr)
-              91:             TypePointer Function 64(fvec4)
-              92:             TypeFunction 2 7(ptr) 7(ptr) 91(ptr) 91(ptr) 66(ptr) 66(ptr)
-             101:             TypeMatrix 24(fvec2) 3
-             102:             TypePointer Function 101
-             103:             TypeMatrix 36(fvec3) 2
-             104:             TypePointer Function 103
-             105:             TypeMatrix 36(fvec3) 4
-             106:             TypePointer Function 105
-             107:             TypeMatrix 24(fvec2) 4
-             108:             TypePointer Function 107
-             109:             TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 102(ptr) 104(ptr) 57(ptr) 106(ptr) 108(ptr)
-             121:             TypeBool
-             122:             TypePointer Function 121(bool)
-             138:             TypeInt 32 1
-             139:             TypePointer Function 138(int)
-             165:    6(float) Constant 0
-             177:      8(int) Constant 7
-             207:    138(int) Constant 7
-    225(ResType):             TypeStruct 6(float) 138(int)
-             253:    6(float) Constant 1050288283
-             274:    6(float) Constant 1065353216
-             278:      8(int) Constant 2
-             342:             TypeVector 138(int) 2
-             343:             TypePointer Function 342(ivec2)
-             369:   24(fvec2) ConstantComposite 165 165
-             370:             TypeVector 121(bool) 2
-             383:      8(int) Constant 3
-             384:   26(ivec2) ConstantComposite 177 383
-             427:      8(int) Constant 8
-             428:   26(ivec2) ConstantComposite 177 427
-    444(ResType):             TypeStruct 24(fvec2) 342(ivec2)
-             451:             TypePointer Function 370(bvec2)
-             509:    6(float) Constant 1073741824
-             512:      8(int) Constant 1
-             513:   26(ivec2) ConstantComposite 512 278
-             560:   24(fvec2) ConstantComposite 274 509
-             578:             TypeVector 138(int) 3
-             579:             TypePointer Function 578(ivec3)
-             605:   36(fvec3) ConstantComposite 165 165 165
-             606:             TypeVector 121(bool) 3
-             619:      8(int) Constant 5
-             620:   38(ivec3) ConstantComposite 177 383 619
-             667:      8(int) Constant 4
-             668:   38(ivec3) ConstantComposite 278 383 667
-    684(ResType):             TypeStruct 36(fvec3) 578(ivec3)
-             691:             TypePointer Function 606(bvec3)
-             710:    6(float) Constant 1050253722
-             757:   38(ivec3) ConstantComposite 512 278 383
-             804:    6(float) Constant 1077936128
-             805:   36(fvec3) ConstantComposite 274 509 804
-             809:             TypePointer Input 64(fvec4)
-       810(inF0):    809(ptr) Variable Input
-             825:             TypeVector 138(int) 4
-             826:             TypePointer Function 825(ivec4)
-             830:             TypeVector 8(int) 4
-             831:             TypePointer Function 830(ivec4)
-             836:             TypePointer Input 830(ivec4)
-       837(inU0):    836(ptr) Variable Input
-       845(inF1):    809(ptr) Variable Input
-       854(inF2):    809(ptr) Variable Input
-             858:   64(fvec4) ConstantComposite 165 165 165 165
-             859:             TypeVector 121(bool) 4
-             872:  830(ivec4) ConstantComposite 177 383 619 278
-             904:             TypePointer Input 6(float)
-             927:      8(int) Constant 9
-             928:      8(int) Constant 10
-             929:  830(ivec4) ConstantComposite 177 427 927 928
-    945(ResType):             TypeStruct 64(fvec4) 825(ivec4)
-             952:             TypePointer Function 859(bvec4)
-            1012:  830(ivec4) ConstantComposite 512 278 383 667
-            1059:             TypePointer Output 64(fvec4)
-1060(@entryPointOutput):   1059(ptr) Variable Output
-            1061:    6(float) Constant 1082130432
-            1062:   64(fvec4) ConstantComposite 274 509 804 1061
-            1089:          48 ConstantComposite 369 369
-            1090:             TypeMatrix 370(bvec2) 2
-   1155(ResType):             TypeStruct 48 342(ivec2)
-            1243:   24(fvec2) ConstantComposite 509 509
-            1244:          48 ConstantComposite 1243 1243
-            1272:          56 ConstantComposite 605 605 605
-            1273:             TypeMatrix 606(bvec3) 3
-   1341(ResType):             TypeStruct 56 578(ivec3)
-            1429:   36(fvec3) ConstantComposite 804 804 804
-            1430:          56 ConstantComposite 1429 1429 1429
-            1458:          65 ConstantComposite 858 858 858 858
-            1459:             TypeMatrix 859(bvec4) 4
-   1530(ResType):             TypeStruct 65 825(ivec4)
-            1618:   64(fvec4) ConstantComposite 1061 1061 1061 1061
-            1619:          65 ConstantComposite 1618 1618 1618 1618
-            1798:             TypePointer Private 8(int)
-     1799(gs_ua):   1798(ptr) Variable Private
-     1800(gs_ub):   1798(ptr) Variable Private
-     1801(gs_uc):   1798(ptr) Variable Private
-            1802:             TypePointer Private 26(ivec2)
-    1803(gs_ua2):   1802(ptr) Variable Private
-    1804(gs_ub2):   1802(ptr) Variable Private
-    1805(gs_uc2):   1802(ptr) Variable Private
-            1806:             TypePointer Private 38(ivec3)
-    1807(gs_ua3):   1806(ptr) Variable Private
-    1808(gs_ub3):   1806(ptr) Variable Private
-    1809(gs_uc3):   1806(ptr) Variable Private
-            1810:             TypePointer Private 830(ivec4)
-    1811(gs_ua4):   1810(ptr) Variable Private
-    1812(gs_ub4):   1810(ptr) Variable Private
-    1813(gs_uc4):   1810(ptr) Variable Private
-4(PixelShaderFunction):           2 Function None 3
+              48:             TypeVector 6(float) 4
+              49:             TypePointer Function 48(fvec4)
+              50:             TypeVector 8(int) 4
+              51:             TypePointer Function 50(ivec4)
+              52:             TypeFunction 48(fvec4) 49(ptr) 49(ptr) 49(ptr) 51(ptr) 51(ptr)
+              60:             TypeMatrix 24(fvec2) 2
+              61:             TypePointer Function 60
+              62:             TypeFunction 60 61(ptr) 61(ptr) 61(ptr)
+              68:             TypeMatrix 36(fvec3) 3
+              69:             TypePointer Function 68
+              70:             TypeFunction 68 69(ptr) 69(ptr) 69(ptr)
+              76:             TypeMatrix 48(fvec4) 4
+              77:             TypePointer Function 76
+              78:             TypeFunction 76 77(ptr) 77(ptr) 77(ptr)
+              84:             TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 25(ptr) 61(ptr) 61(ptr)
+              93:             TypeFunction 2 7(ptr) 7(ptr) 37(ptr) 37(ptr) 69(ptr) 69(ptr)
+             102:             TypeFunction 2 7(ptr) 7(ptr) 49(ptr) 49(ptr) 77(ptr) 77(ptr)
+             111:             TypeMatrix 36(fvec3) 2
+             112:             TypePointer Function 111
+             113:             TypeMatrix 24(fvec2) 3
+             114:             TypePointer Function 113
+             115:             TypeMatrix 48(fvec4) 3
+             116:             TypePointer Function 115
+             117:             TypeMatrix 48(fvec4) 2
+             118:             TypePointer Function 117
+             119:             TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 112(ptr) 114(ptr) 69(ptr) 116(ptr) 118(ptr)
+             131:             TypeBool
+             132:             TypePointer Function 131(bool)
+             148:             TypeInt 32 1
+             149:             TypePointer Function 148(int)
+             175:    6(float) Constant 0
+             187:      8(int) Constant 7
+             217:    148(int) Constant 7
+    235(ResType):             TypeStruct 6(float) 148(int)
+             263:    6(float) Constant 1050288283
+             284:    6(float) Constant 1065353216
+             288:      8(int) Constant 2
+             352:             TypeVector 148(int) 2
+             353:             TypePointer Function 352(ivec2)
+             379:   24(fvec2) ConstantComposite 175 175
+             380:             TypeVector 131(bool) 2
+             393:      8(int) Constant 3
+             394:   26(ivec2) ConstantComposite 187 393
+             437:      8(int) Constant 8
+             438:   26(ivec2) ConstantComposite 187 437
+    454(ResType):             TypeStruct 24(fvec2) 352(ivec2)
+             461:             TypePointer Function 380(bvec2)
+             519:    6(float) Constant 1073741824
+             522:      8(int) Constant 1
+             523:   26(ivec2) ConstantComposite 522 288
+             570:   24(fvec2) ConstantComposite 284 519
+             588:             TypeVector 148(int) 3
+             589:             TypePointer Function 588(ivec3)
+             615:   36(fvec3) ConstantComposite 175 175 175
+             616:             TypeVector 131(bool) 3
+             629:      8(int) Constant 5
+             630:   38(ivec3) ConstantComposite 187 393 629
+             677:      8(int) Constant 4
+             678:   38(ivec3) ConstantComposite 288 393 677
+    694(ResType):             TypeStruct 36(fvec3) 588(ivec3)
+             701:             TypePointer Function 616(bvec3)
+             720:    6(float) Constant 1050253722
+             767:   38(ivec3) ConstantComposite 522 288 393
+             814:    6(float) Constant 1077936128
+             815:   36(fvec3) ConstantComposite 284 519 814
+             833:             TypeVector 148(int) 4
+             834:             TypePointer Function 833(ivec4)
+             860:   48(fvec4) ConstantComposite 175 175 175 175
+             861:             TypeVector 131(bool) 4
+             874:   50(ivec4) ConstantComposite 187 393 629 288
+             928:      8(int) Constant 9
+             929:      8(int) Constant 10
+             930:   50(ivec4) ConstantComposite 187 437 928 929
+    946(ResType):             TypeStruct 48(fvec4) 833(ivec4)
+             953:             TypePointer Function 861(bvec4)
+            1013:   50(ivec4) ConstantComposite 522 288 393 677
+            1060:    6(float) Constant 1082130432
+            1061:   48(fvec4) ConstantComposite 284 519 814 1060
+            1089:          60 ConstantComposite 379 379
+            1090:             TypeMatrix 380(bvec2) 2
+   1155(ResType):             TypeStruct 60 352(ivec2)
+            1243:   24(fvec2) ConstantComposite 519 519
+            1244:          60 ConstantComposite 1243 1243
+            1272:          68 ConstantComposite 615 615 615
+            1273:             TypeMatrix 616(bvec3) 3
+   1341(ResType):             TypeStruct 68 588(ivec3)
+            1429:   36(fvec3) ConstantComposite 814 814 814
+            1430:          68 ConstantComposite 1429 1429 1429
+            1458:          76 ConstantComposite 860 860 860 860
+            1459:             TypeMatrix 861(bvec4) 4
+   1530(ResType):             TypeStruct 76 833(ivec4)
+            1618:   48(fvec4) ConstantComposite 1060 1060 1060 1060
+            1619:          76 ConstantComposite 1618 1618 1618 1618
+ 1798(PS_OUTPUT):             TypeStruct 48(fvec4)
+            1799:             TypePointer Function 1798(PS_OUTPUT)
+            1801:    148(int) Constant 0
+            1802:   48(fvec4) ConstantComposite 284 284 284 284
+            1804:             TypePointer Output 1798(PS_OUTPUT)
+1805(@entryPointOutput):   1804(ptr) Variable Output
+            1808:             TypePointer Private 8(int)
+     1809(gs_ua):   1808(ptr) Variable Private
+     1810(gs_ub):   1808(ptr) Variable Private
+     1811(gs_uc):   1808(ptr) Variable Private
+            1812:             TypePointer Private 26(ivec2)
+    1813(gs_ua2):   1812(ptr) Variable Private
+    1814(gs_ub2):   1812(ptr) Variable Private
+    1815(gs_uc2):   1812(ptr) Variable Private
+            1816:             TypePointer Private 38(ivec3)
+    1817(gs_ua3):   1816(ptr) Variable Private
+    1818(gs_ub3):   1816(ptr) Variable Private
+    1819(gs_uc3):   1816(ptr) Variable Private
+            1820:             TypePointer Private 50(ivec4)
+    1821(gs_ua4):   1820(ptr) Variable Private
+    1822(gs_ub4):   1820(ptr) Variable Private
+    1823(gs_uc4):   1820(ptr) Variable Private
+         4(main):           2 Function None 3
                5:             Label
-       808(r000):    122(ptr) Variable Function
-       813(r001):     91(ptr) Variable Function
-       816(r002):     91(ptr) Variable Function
-       819(r003):    122(ptr) Variable Function
-       822(r004):     91(ptr) Variable Function
-       827(r005):    826(ptr) Variable Function
-       832(r006):    831(ptr) Variable Function
-       835(r007):     91(ptr) Variable Function
-       840(r009):     91(ptr) Variable Function
-       843(r010):     91(ptr) Variable Function
-       848(r011):     91(ptr) Variable Function
-       851(r012):     91(ptr) Variable Function
-       865(r013):     91(ptr) Variable Function
-       868(r014):     91(ptr) Variable Function
-       871(r015):    831(ptr) Variable Function
-       874(r016):     91(ptr) Variable Function
-       877(r017):     91(ptr) Variable Function
-       880(r018):     91(ptr) Variable Function
-       883(r019):     91(ptr) Variable Function
-       886(r020):     91(ptr) Variable Function
-       889(r021):     91(ptr) Variable Function
-       892(r022):     91(ptr) Variable Function
-       895(r023):      7(ptr) Variable Function
-       899(r024):      7(ptr) Variable Function
-       903(r025):     91(ptr) Variable Function
-       915(r029):     91(ptr) Variable Function
-       918(r030):     91(ptr) Variable Function
-       921(r031):     91(ptr) Variable Function
-       926(r032):    831(ptr) Variable Function
-       931(r033):    831(ptr) Variable Function
-       933(r034):     91(ptr) Variable Function
-       936(r036):     91(ptr) Variable Function
-       940(r037):     91(ptr) Variable Function
-       943(r038):     91(ptr) Variable Function
-       949(r039):     91(ptr) Variable Function
-       953(r040):    952(ptr) Variable Function
-       956(r041):    952(ptr) Variable Function
-       959(r042):     91(ptr) Variable Function
-      963(r039a):     91(ptr) Variable Function
-       968(r043):      7(ptr) Variable Function
-       971(r044):     91(ptr) Variable Function
-       974(r045):     91(ptr) Variable Function
-       978(r046):     91(ptr) Variable Function
-       981(r047):     91(ptr) Variable Function
-       985(r048):     91(ptr) Variable Function
-       989(r049):     91(ptr) Variable Function
-       992(r050):     91(ptr) Variable Function
-       996(r051):     91(ptr) Variable Function
-       999(r052):     91(ptr) Variable Function
-      1003(r053):     91(ptr) Variable Function
-      1007(r054):     91(ptr) Variable Function
-      1011(r055):    831(ptr) Variable Function
-      1014(r056):     91(ptr) Variable Function
-      1017(r057):     91(ptr) Variable Function
-      1020(r058):     91(ptr) Variable Function
-      1025(r059):     91(ptr) Variable Function
-      1028(r060):     91(ptr) Variable Function
-      1035(r061):     91(ptr) Variable Function
-      1038(r062):     91(ptr) Variable Function
-      1043(r063):     91(ptr) Variable Function
-      1046(r064):     91(ptr) Variable Function
-      1050(r065):     91(ptr) Variable Function
-      1053(r066):     91(ptr) Variable Function
-      1056(r067):     91(ptr) Variable Function
-             811:   64(fvec4) Load 810(inF0)
-             812:   121(bool) All 811
-                              Store 808(r000) 812
-             814:   64(fvec4) Load 810(inF0)
-             815:   64(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 814
-                              Store 813(r001) 815
-             817:   64(fvec4) Load 810(inF0)
-             818:   64(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 817
-                              Store 816(r002) 818
-             820:   64(fvec4) Load 810(inF0)
-             821:   121(bool) Any 820
-                              Store 819(r003) 821
-             823:   64(fvec4) Load 810(inF0)
-             824:   64(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 823
-                              Store 822(r004) 824
-             828:   64(fvec4) Load 810(inF0)
-             829:  825(ivec4) Bitcast 828
-                              Store 827(r005) 829
-             833:   64(fvec4) Load 810(inF0)
-             834:  830(ivec4) Bitcast 833
-                              Store 832(r006) 834
-             838:  830(ivec4) Load 837(inU0)
-             839:   64(fvec4) Bitcast 838
-                              Store 835(r007) 839
-             841:   64(fvec4) Load 810(inF0)
-             842:   64(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 841
-                              Store 840(r009) 842
-             844:   64(fvec4) Load 810(inF0)
-             846:   64(fvec4) Load 845(inF1)
-             847:   64(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 844 846
-                              Store 843(r010) 847
-             849:   64(fvec4) Load 810(inF0)
-             850:   64(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 849
-                              Store 848(r011) 850
-             852:   64(fvec4) Load 810(inF0)
-             853:   64(fvec4) Load 845(inF1)
-             855:   64(fvec4) Load 854(inF2)
-             856:   64(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 852 853 855
-                              Store 851(r012) 856
-             857:   64(fvec4) Load 810(inF0)
-             860:  859(bvec4) FOrdLessThan 857 858
-             861:   121(bool) Any 860
-                              SelectionMerge 863 None
-                              BranchConditional 861 862 863
-             862:               Label
-                                Kill
-             863:             Label
-             866:   64(fvec4) Load 810(inF0)
-             867:   64(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 866
-                              Store 865(r013) 867
-             869:   64(fvec4) Load 810(inF0)
-             870:   64(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 869
-                              Store 868(r014) 870
-             873:  830(ivec4) BitCount 872
-                              Store 871(r015) 873
-             875:   64(fvec4) Load 810(inF0)
-             876:   64(fvec4) DPdx 875
-                              Store 874(r016) 876
-             878:   64(fvec4) Load 810(inF0)
-             879:   64(fvec4) DPdxCoarse 878
-                              Store 877(r017) 879
-             881:   64(fvec4) Load 810(inF0)
-             882:   64(fvec4) DPdxFine 881
-                              Store 880(r018) 882
-             884:   64(fvec4) Load 810(inF0)
-             885:   64(fvec4) DPdy 884
-                              Store 883(r019) 885
-             887:   64(fvec4) Load 810(inF0)
-             888:   64(fvec4) DPdyCoarse 887
-                              Store 886(r020) 888
-             890:   64(fvec4) Load 810(inF0)
-             891:   64(fvec4) DPdyFine 890
-                              Store 889(r021) 891
-             893:   64(fvec4) Load 810(inF0)
-             894:   64(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 893
-                              Store 892(r022) 894
-             896:   64(fvec4) Load 810(inF0)
-             897:   64(fvec4) Load 845(inF1)
-             898:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 896 897
-                              Store 895(r023) 898
-             900:   64(fvec4) Load 810(inF0)
-             901:   64(fvec4) Load 845(inF1)
-             902:    6(float) Dot 900 901
-                              Store 899(r024) 902
-             905:    904(ptr) AccessChain 810(inF0) 512
-             906:    6(float) Load 905
-             907:    904(ptr) AccessChain 845(inF1) 512
-             908:    6(float) Load 907
-             909:    6(float) FMul 906 908
-             910:    904(ptr) AccessChain 810(inF0) 278
-             911:    6(float) Load 910
-             912:    904(ptr) AccessChain 845(inF1) 383
-             913:    6(float) Load 912
-             914:   64(fvec4) CompositeConstruct 274 909 911 913
-                              Store 903(r025) 914
-             916:   64(fvec4) Load 810(inF0)
-             917:   64(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 916
-                              Store 915(r029) 917
-             919:   64(fvec4) Load 810(inF0)
-             920:   64(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 919
-                              Store 918(r030) 920
-             922:   64(fvec4) Load 810(inF0)
-             923:   64(fvec4) Load 845(inF1)
-             924:   64(fvec4) Load 854(inF2)
-             925:   64(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 922 923 924
-                              Store 921(r031) 925
-             930:  830(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 929
-                              Store 926(r032) 930
-             932:  830(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 929
-                              Store 931(r033) 932
-             934:   64(fvec4) Load 810(inF0)
-             935:   64(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 934
-                              Store 933(r034) 935
-             937:   64(fvec4) Load 810(inF0)
-             938:   64(fvec4) Load 845(inF1)
-             939:   64(fvec4) FMod 937 938
-                              Store 936(r036) 939
-             941:   64(fvec4) Load 810(inF0)
-             942:   64(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 941
-                              Store 940(r037) 942
-             944:   64(fvec4) Load 810(inF0)
-             946:945(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 944
-             947:  825(ivec4) CompositeExtract 946 1
-                              Store 845(inF1) 947
-             948:   64(fvec4) CompositeExtract 946 0
-                              Store 943(r038) 948
-             950:   64(fvec4) Load 810(inF0)
-             951:   64(fvec4) Fwidth 950
-                              Store 949(r039) 951
-             954:   64(fvec4) Load 810(inF0)
-             955:  859(bvec4) IsInf 954
-                              Store 953(r040) 955
-             957:   64(fvec4) Load 810(inF0)
-             958:  859(bvec4) IsNan 957
-                              Store 956(r041) 958
-             960:   64(fvec4) Load 810(inF0)
-             961:   64(fvec4) Load 845(inF1)
-             962:   64(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 960 961
-                              Store 959(r042) 962
-             964:   64(fvec4) Load 810(inF0)
-             965:   64(fvec4) Load 845(inF1)
-             966:   64(fvec4) Load 854(inF2)
-             967:   64(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 964 965 966
-                              Store 963(r039a) 967
-             969:   64(fvec4) Load 810(inF0)
-             970:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 969
-                              Store 968(r043) 970
-             972:   64(fvec4) Load 810(inF0)
-             973:   64(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 972
-                              Store 971(r044) 973
-             975:   64(fvec4) Load 810(inF0)
-             976:   64(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 975
-             977:   64(fvec4) VectorTimesScalar 976 253
-                              Store 974(r045) 977
-             979:   64(fvec4) Load 810(inF0)
-             980:   64(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 979
-                              Store 978(r046) 980
-             982:   64(fvec4) Load 810(inF0)
-             983:   64(fvec4) Load 845(inF1)
-             984:   64(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 982 983
-                              Store 981(r047) 984
-             986:   64(fvec4) Load 810(inF0)
-             987:   64(fvec4) Load 845(inF1)
-             988:   64(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 986 987
-                              Store 985(r048) 988
-             990:   64(fvec4) Load 810(inF0)
-             991:   64(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 990
-                              Store 989(r049) 991
-             993:   64(fvec4) Load 810(inF0)
-             994:   64(fvec4) Load 845(inF1)
-             995:   64(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 993 994
-                              Store 992(r050) 995
-             997:   64(fvec4) Load 810(inF0)
-             998:   64(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 997
-                              Store 996(r051) 998
-            1000:   64(fvec4) Load 810(inF0)
-            1001:   64(fvec4) CompositeConstruct 274 274 274 274
-            1002:   64(fvec4) FDiv 1001 1000
-                              Store 999(r052) 1002
-            1004:   64(fvec4) Load 810(inF0)
-            1005:   64(fvec4) Load 845(inF1)
-            1006:   64(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1004 1005
-                              Store 1003(r053) 1006
-            1008:   64(fvec4) Load 810(inF0)
-            1009:   64(fvec4) Load 845(inF1)
-            1010:   64(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1008 1009 509
-                              Store 1007(r054) 1010
-            1013:  830(ivec4) BitReverse 1012
-                              Store 1011(r055) 1013
-            1015:   64(fvec4) Load 810(inF0)
-            1016:   64(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1015
-                              Store 1014(r056) 1016
-            1018:   64(fvec4) Load 810(inF0)
-            1019:   64(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1018
-                              Store 1017(r057) 1019
-            1021:   64(fvec4) Load 810(inF0)
-            1022:   64(fvec4) CompositeConstruct 165 165 165 165
-            1023:   64(fvec4) CompositeConstruct 274 274 274 274
-            1024:   64(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1021 1022 1023
-                              Store 1020(r058) 1024
-            1026:   64(fvec4) Load 810(inF0)
-            1027:   64(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1026
-                              Store 1025(r059) 1027
-            1029:   64(fvec4) Load 810(inF0)
-            1030:   64(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1029
-                              Store 1028(r060) 1030
-            1031:   64(fvec4) Load 810(inF0)
-            1032:   64(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1031
-                              Store 845(inF1) 1032
-            1033:   64(fvec4) Load 810(inF0)
-            1034:   64(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1033
-                              Store 854(inF2) 1034
-            1036:   64(fvec4) Load 810(inF0)
-            1037:   64(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1036
-                              Store 1035(r061) 1037
-            1039:   64(fvec4) Load 810(inF0)
-            1040:   64(fvec4) Load 845(inF1)
-            1041:   64(fvec4) Load 854(inF2)
-            1042:   64(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1039 1040 1041
-                              Store 1038(r062) 1042
-            1044:   64(fvec4) Load 810(inF0)
-            1045:   64(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1044
-                              Store 1043(r063) 1045
-            1047:   64(fvec4) Load 810(inF0)
-            1048:   64(fvec4) Load 845(inF1)
-            1049:   64(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1047 1048
-                              Store 1046(r064) 1049
-            1051:   64(fvec4) Load 810(inF0)
-            1052:   64(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1051
-                              Store 1050(r065) 1052
-            1054:   64(fvec4) Load 810(inF0)
-            1055:   64(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1054
-                              Store 1053(r066) 1055
-            1057:   64(fvec4) Load 810(inF0)
-            1058:   64(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1057
-                              Store 1056(r067) 1058
-                              Store 1060(@entryPointOutput) 1062
+ 1800(ps_output):   1799(ptr) Variable Function
+            1803:     49(ptr) AccessChain 1800(ps_output) 1801
+                              Store 1803 1802
+            1806:1798(PS_OUTPUT) Load 1800(ps_output)
+                              Store 1805(@entryPointOutput) 1806
                               Return
                               FunctionEnd
 16(PixelShaderFunctionS(f1;f1;f1;u1;u1;):    6(float) Function None 10
@@ -6539,266 +6272,266 @@ gl_FragCoord origin is upper left
         14(inU0):      9(ptr) FunctionParameter
         15(inU1):      9(ptr) FunctionParameter
               17:             Label
-       123(r000):    122(ptr) Variable Function
-       126(r001):      7(ptr) Variable Function
-       129(r002):      7(ptr) Variable Function
-       132(r003):    122(ptr) Variable Function
-       135(r004):      7(ptr) Variable Function
-       140(r005):    139(ptr) Variable Function
-       143(r006):      9(ptr) Variable Function
-       146(r007):      7(ptr) Variable Function
-       149(r009):      7(ptr) Variable Function
-       152(r010):      7(ptr) Variable Function
-       156(r011):      7(ptr) Variable Function
-       159(r012):      7(ptr) Variable Function
-       170(r014):      7(ptr) Variable Function
-       173(r015):      7(ptr) Variable Function
-       176(r016):      9(ptr) Variable Function
-       179(r017):      7(ptr) Variable Function
-       182(r018):      7(ptr) Variable Function
-       185(r019):      7(ptr) Variable Function
-       188(r020):      7(ptr) Variable Function
-       191(r021):      7(ptr) Variable Function
-       194(r022):      7(ptr) Variable Function
-       197(r023):      7(ptr) Variable Function
-       200(r027):      7(ptr) Variable Function
-       203(r028):      7(ptr) Variable Function
-       206(r029):      9(ptr) Variable Function
-       210(r030):      9(ptr) Variable Function
-       213(r031):      7(ptr) Variable Function
-       216(r033):      7(ptr) Variable Function
-       220(r034):      7(ptr) Variable Function
-       223(r035):      7(ptr) Variable Function
-       229(r036):      7(ptr) Variable Function
-       232(r037):    122(ptr) Variable Function
-       235(r038):    122(ptr) Variable Function
-       238(r039):      7(ptr) Variable Function
-      242(r039a):      7(ptr) Variable Function
-       247(r040):      7(ptr) Variable Function
-       250(r041):      7(ptr) Variable Function
-       255(r042):      7(ptr) Variable Function
-       258(r043):      7(ptr) Variable Function
-       262(r044):      7(ptr) Variable Function
-       266(r045):      7(ptr) Variable Function
-       270(r046):      7(ptr) Variable Function
-       273(r047):      7(ptr) Variable Function
-       277(r048):      9(ptr) Variable Function
-       280(r049):      7(ptr) Variable Function
-       283(r050):      7(ptr) Variable Function
-       286(r051):      7(ptr) Variable Function
-       289(r052):      7(ptr) Variable Function
-       292(r053):      7(ptr) Variable Function
-       299(r055):      7(ptr) Variable Function
-       302(r056):      7(ptr) Variable Function
-       307(r057):      7(ptr) Variable Function
-       310(r058):      7(ptr) Variable Function
-       314(r059):      7(ptr) Variable Function
-       317(r060):      7(ptr) Variable Function
-       320(r061):      7(ptr) Variable Function
-             124:    6(float) Load 11(inF0)
-             125:   121(bool) All 124
-                              Store 123(r000) 125
-             127:    6(float) Load 11(inF0)
-             128:    6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 127
-                              Store 126(r001) 128
-             130:    6(float) Load 11(inF0)
-             131:    6(float) ExtInst 1(GLSL.std.450) 17(Acos) 130
-                              Store 129(r002) 131
-             133:    6(float) Load 11(inF0)
-             134:   121(bool) Any 133
-                              Store 132(r003) 134
-             136:    6(float) Load 11(inF0)
-             137:    6(float) ExtInst 1(GLSL.std.450) 16(Asin) 136
-                              Store 135(r004) 137
-             141:    6(float) Load 11(inF0)
-             142:    138(int) Bitcast 141
-                              Store 140(r005) 142
-             144:    6(float) Load 11(inF0)
-             145:      8(int) Bitcast 144
-                              Store 143(r006) 145
-             147:      8(int) Load 14(inU0)
-             148:    6(float) Bitcast 147
-                              Store 146(r007) 148
-             150:    6(float) Load 11(inF0)
-             151:    6(float) ExtInst 1(GLSL.std.450) 18(Atan) 150
-                              Store 149(r009) 151
-             153:    6(float) Load 11(inF0)
-             154:    6(float) Load 12(inF1)
-             155:    6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 153 154
-                              Store 152(r010) 155
-             157:    6(float) Load 11(inF0)
-             158:    6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 157
-                              Store 156(r011) 158
+       133(r000):    132(ptr) Variable Function
+       136(r001):      7(ptr) Variable Function
+       139(r002):      7(ptr) Variable Function
+       142(r003):    132(ptr) Variable Function
+       145(r004):      7(ptr) Variable Function
+       150(r005):    149(ptr) Variable Function
+       153(r006):      9(ptr) Variable Function
+       156(r007):      7(ptr) Variable Function
+       159(r009):      7(ptr) Variable Function
+       162(r010):      7(ptr) Variable Function
+       166(r011):      7(ptr) Variable Function
+       169(r012):      7(ptr) Variable Function
+       180(r014):      7(ptr) Variable Function
+       183(r015):      7(ptr) Variable Function
+       186(r016):      9(ptr) Variable Function
+       189(r017):      7(ptr) Variable Function
+       192(r018):      7(ptr) Variable Function
+       195(r019):      7(ptr) Variable Function
+       198(r020):      7(ptr) Variable Function
+       201(r021):      7(ptr) Variable Function
+       204(r022):      7(ptr) Variable Function
+       207(r023):      7(ptr) Variable Function
+       210(r027):      7(ptr) Variable Function
+       213(r028):      7(ptr) Variable Function
+       216(r029):      9(ptr) Variable Function
+       220(r030):      9(ptr) Variable Function
+       223(r031):      7(ptr) Variable Function
+       226(r033):      7(ptr) Variable Function
+       230(r034):      7(ptr) Variable Function
+       233(r035):      7(ptr) Variable Function
+       239(r036):      7(ptr) Variable Function
+       242(r037):    132(ptr) Variable Function
+       245(r038):    132(ptr) Variable Function
+       248(r039):      7(ptr) Variable Function
+      252(r039a):      7(ptr) Variable Function
+       257(r040):      7(ptr) Variable Function
+       260(r041):      7(ptr) Variable Function
+       265(r042):      7(ptr) Variable Function
+       268(r043):      7(ptr) Variable Function
+       272(r044):      7(ptr) Variable Function
+       276(r045):      7(ptr) Variable Function
+       280(r046):      7(ptr) Variable Function
+       283(r047):      7(ptr) Variable Function
+       287(r048):      9(ptr) Variable Function
+       290(r049):      7(ptr) Variable Function
+       293(r050):      7(ptr) Variable Function
+       296(r051):      7(ptr) Variable Function
+       299(r052):      7(ptr) Variable Function
+       302(r053):      7(ptr) Variable Function
+       309(r055):      7(ptr) Variable Function
+       312(r056):      7(ptr) Variable Function
+       317(r057):      7(ptr) Variable Function
+       320(r058):      7(ptr) Variable Function
+       324(r059):      7(ptr) Variable Function
+       327(r060):      7(ptr) Variable Function
+       330(r061):      7(ptr) Variable Function
+             134:    6(float) Load 11(inF0)
+             135:   131(bool) All 134
+                              Store 133(r000) 135
+             137:    6(float) Load 11(inF0)
+             138:    6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 137
+                              Store 136(r001) 138
+             140:    6(float) Load 11(inF0)
+             141:    6(float) ExtInst 1(GLSL.std.450) 17(Acos) 140
+                              Store 139(r002) 141
+             143:    6(float) Load 11(inF0)
+             144:   131(bool) Any 143
+                              Store 142(r003) 144
+             146:    6(float) Load 11(inF0)
+             147:    6(float) ExtInst 1(GLSL.std.450) 16(Asin) 146
+                              Store 145(r004) 147
+             151:    6(float) Load 11(inF0)
+             152:    148(int) Bitcast 151
+                              Store 150(r005) 152
+             154:    6(float) Load 11(inF0)
+             155:      8(int) Bitcast 154
+                              Store 153(r006) 155
+             157:      8(int) Load 14(inU0)
+             158:    6(float) Bitcast 157
+                              Store 156(r007) 158
              160:    6(float) Load 11(inF0)
-             161:    6(float) Load 12(inF1)
-             162:    6(float) Load 13(inF2)
-             163:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 160 161 162
-                              Store 159(r012) 163
-             164:    6(float) Load 11(inF0)
-             166:   121(bool) FOrdLessThan 164 165
-                              SelectionMerge 168 None
-                              BranchConditional 166 167 168
-             167:               Label
-                                Kill
-             168:             Label
-             171:    6(float) Load 11(inF0)
-             172:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 171
-                              Store 170(r014) 172
+             161:    6(float) ExtInst 1(GLSL.std.450) 18(Atan) 160
+                              Store 159(r009) 161
+             163:    6(float) Load 11(inF0)
+             164:    6(float) Load 12(inF1)
+             165:    6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 163 164
+                              Store 162(r010) 165
+             167:    6(float) Load 11(inF0)
+             168:    6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 167
+                              Store 166(r011) 168
+             170:    6(float) Load 11(inF0)
+             171:    6(float) Load 12(inF1)
+             172:    6(float) Load 13(inF2)
+             173:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 170 171 172
+                              Store 169(r012) 173
              174:    6(float) Load 11(inF0)
-             175:    6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 174
-                              Store 173(r015) 175
-             178:      8(int) BitCount 177
-                              Store 176(r016) 178
-             180:    6(float) Load 11(inF0)
-             181:    6(float) DPdx 180
-                              Store 179(r017) 181
-             183:    6(float) Load 11(inF0)
-             184:    6(float) DPdxCoarse 183
-                              Store 182(r018) 184
-             186:    6(float) Load 11(inF0)
-             187:    6(float) DPdxFine 186
-                              Store 185(r019) 187
-             189:    6(float) Load 11(inF0)
-             190:    6(float) DPdy 189
-                              Store 188(r020) 190
-             192:    6(float) Load 11(inF0)
-             193:    6(float) DPdyCoarse 192
-                              Store 191(r021) 193
-             195:    6(float) Load 11(inF0)
-             196:    6(float) DPdyFine 195
-                              Store 194(r022) 196
-             198:    6(float) Load 11(inF0)
-             199:    6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 198
-                              Store 197(r023) 199
-             201:    6(float) Load 11(inF0)
-             202:    6(float) ExtInst 1(GLSL.std.450) 27(Exp) 201
-                              Store 200(r027) 202
-             204:    6(float) Load 11(inF0)
-             205:    6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 204
-                              Store 203(r028) 205
-             208:    138(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 207
-             209:      8(int) Bitcast 208
-                              Store 206(r029) 209
-             211:    138(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 207
-             212:      8(int) Bitcast 211
-                              Store 210(r030) 212
+             176:   131(bool) FOrdLessThan 174 175
+                              SelectionMerge 178 None
+                              BranchConditional 176 177 178
+             177:               Label
+                                Kill
+             178:             Label
+             181:    6(float) Load 11(inF0)
+             182:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 181
+                              Store 180(r014) 182
+             184:    6(float) Load 11(inF0)
+             185:    6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 184
+                              Store 183(r015) 185
+             188:      8(int) BitCount 187
+                              Store 186(r016) 188
+             190:    6(float) Load 11(inF0)
+             191:    6(float) DPdx 190
+                              Store 189(r017) 191
+             193:    6(float) Load 11(inF0)
+             194:    6(float) DPdxCoarse 193
+                              Store 192(r018) 194
+             196:    6(float) Load 11(inF0)
+             197:    6(float) DPdxFine 196
+                              Store 195(r019) 197
+             199:    6(float) Load 11(inF0)
+             200:    6(float) DPdy 199
+                              Store 198(r020) 200
+             202:    6(float) Load 11(inF0)
+             203:    6(float) DPdyCoarse 202
+                              Store 201(r021) 203
+             205:    6(float) Load 11(inF0)
+             206:    6(float) DPdyFine 205
+                              Store 204(r022) 206
+             208:    6(float) Load 11(inF0)
+             209:    6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 208
+                              Store 207(r023) 209
+             211:    6(float) Load 11(inF0)
+             212:    6(float) ExtInst 1(GLSL.std.450) 27(Exp) 211
+                              Store 210(r027) 212
              214:    6(float) Load 11(inF0)
-             215:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 214
-                              Store 213(r031) 215
-             217:    6(float) Load 11(inF0)
-             218:    6(float) Load 12(inF1)
-             219:    6(float) FMod 217 218
-                              Store 216(r033) 219
-             221:    6(float) Load 11(inF0)
-             222:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 221
-                              Store 220(r034) 222
+             215:    6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 214
+                              Store 213(r028) 215
+             218:    148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 217
+             219:      8(int) Bitcast 218
+                              Store 216(r029) 219
+             221:    148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 217
+             222:      8(int) Bitcast 221
+                              Store 220(r030) 222
              224:    6(float) Load 11(inF0)
-             226:225(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 224
-             227:    138(int) CompositeExtract 226 1
-                              Store 12(inF1) 227
-             228:    6(float) CompositeExtract 226 0
-                              Store 223(r035) 228
-             230:    6(float) Load 11(inF0)
-             231:    6(float) Fwidth 230
-                              Store 229(r036) 231
-             233:    6(float) Load 11(inF0)
-             234:   121(bool) IsInf 233
-                              Store 232(r037) 234
-             236:    6(float) Load 11(inF0)
-             237:   121(bool) IsNan 236
-                              Store 235(r038) 237
-             239:    6(float) Load 11(inF0)
-             240:    6(float) Load 12(inF1)
-             241:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 239 240
-                              Store 238(r039) 241
+             225:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 224
+                              Store 223(r031) 225
+             227:    6(float) Load 11(inF0)
+             228:    6(float) Load 12(inF1)
+             229:    6(float) FMod 227 228
+                              Store 226(r033) 229
+             231:    6(float) Load 11(inF0)
+             232:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 231
+                              Store 230(r034) 232
+             234:    6(float) Load 11(inF0)
+             236:235(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 234
+             237:    148(int) CompositeExtract 236 1
+                              Store 12(inF1) 237
+             238:    6(float) CompositeExtract 236 0
+                              Store 233(r035) 238
+             240:    6(float) Load 11(inF0)
+             241:    6(float) Fwidth 240
+                              Store 239(r036) 241
              243:    6(float) Load 11(inF0)
-             244:    6(float) Load 12(inF1)
-             245:    6(float) Load 13(inF2)
-             246:    6(float) ExtInst 1(GLSL.std.450) 46(FMix) 243 244 245
-                              Store 242(r039a) 246
-             248:    6(float) Load 11(inF0)
-             249:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 248
-                              Store 247(r040) 249
-             251:    6(float) Load 11(inF0)
-             252:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 251
-             254:    6(float) FMul 252 253
-                              Store 250(r041) 254
-             256:    6(float) Load 11(inF0)
-             257:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 256
-                              Store 255(r042) 257
-             259:    6(float) Load 11(inF0)
-             260:    6(float) Load 12(inF1)
-             261:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 259 260
-                              Store 258(r043) 261
-             263:    6(float) Load 11(inF0)
-             264:    6(float) Load 12(inF1)
-             265:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 263 264
-                              Store 262(r044) 265
-             267:    6(float) Load 11(inF0)
-             268:    6(float) Load 12(inF1)
-             269:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 267 268
-                              Store 266(r045) 269
-             271:    6(float) Load 11(inF0)
-             272:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 271
-                              Store 270(r046) 272
-             275:    6(float) Load 11(inF0)
-             276:    6(float) FDiv 274 275
-                              Store 273(r047) 276
-             279:      8(int) BitReverse 278
-                              Store 277(r048) 279
+             244:   131(bool) IsInf 243
+                              Store 242(r037) 244
+             246:    6(float) Load 11(inF0)
+             247:   131(bool) IsNan 246
+                              Store 245(r038) 247
+             249:    6(float) Load 11(inF0)
+             250:    6(float) Load 12(inF1)
+             251:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 249 250
+                              Store 248(r039) 251
+             253:    6(float) Load 11(inF0)
+             254:    6(float) Load 12(inF1)
+             255:    6(float) Load 13(inF2)
+             256:    6(float) ExtInst 1(GLSL.std.450) 46(FMix) 253 254 255
+                              Store 252(r039a) 256
+             258:    6(float) Load 11(inF0)
+             259:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 258
+                              Store 257(r040) 259
+             261:    6(float) Load 11(inF0)
+             262:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 261
+             264:    6(float) FMul 262 263
+                              Store 260(r041) 264
+             266:    6(float) Load 11(inF0)
+             267:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 266
+                              Store 265(r042) 267
+             269:    6(float) Load 11(inF0)
+             270:    6(float) Load 12(inF1)
+             271:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 269 270
+                              Store 268(r043) 271
+             273:    6(float) Load 11(inF0)
+             274:    6(float) Load 12(inF1)
+             275:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 273 274
+                              Store 272(r044) 275
+             277:    6(float) Load 11(inF0)
+             278:    6(float) Load 12(inF1)
+             279:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 277 278
+                              Store 276(r045) 279
              281:    6(float) Load 11(inF0)
-             282:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 281
-                              Store 280(r049) 282
-             284:    6(float) Load 11(inF0)
-             285:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 284
-                              Store 283(r050) 285
-             287:    6(float) Load 11(inF0)
-             288:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 287 165 274
-                              Store 286(r051) 288
-             290:    6(float) Load 11(inF0)
-             291:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 290
-                              Store 289(r052) 291
-             293:    6(float) Load 11(inF0)
-             294:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 293
-                              Store 292(r053) 294
-             295:    6(float) Load 11(inF0)
-             296:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 295
-                              Store 12(inF1) 296
+             282:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 281
+                              Store 280(r046) 282
+             285:    6(float) Load 11(inF0)
+             286:    6(float) FDiv 284 285
+                              Store 283(r047) 286
+             289:      8(int) BitReverse 288
+                              Store 287(r048) 289
+             291:    6(float) Load 11(inF0)
+             292:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 291
+                              Store 290(r049) 292
+             294:    6(float) Load 11(inF0)
+             295:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 294
+                              Store 293(r050) 295
              297:    6(float) Load 11(inF0)
-             298:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 297
-                              Store 13(inF2) 298
+             298:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 297 175 284
+                              Store 296(r051) 298
              300:    6(float) Load 11(inF0)
-             301:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 300
-                              Store 299(r055) 301
+             301:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 300
+                              Store 299(r052) 301
              303:    6(float) Load 11(inF0)
-             304:    6(float) Load 12(inF1)
-             305:    6(float) Load 13(inF2)
-             306:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 303 304 305
-                              Store 302(r056) 306
-             308:    6(float) Load 11(inF0)
-             309:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 308
-                              Store 307(r057) 309
-             311:    6(float) Load 11(inF0)
-             312:    6(float) Load 12(inF1)
-             313:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 311 312
-                              Store 310(r058) 313
-             315:    6(float) Load 11(inF0)
-             316:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 315
-                              Store 314(r059) 316
+             304:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 303
+                              Store 302(r053) 304
+             305:    6(float) Load 11(inF0)
+             306:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 305
+                              Store 12(inF1) 306
+             307:    6(float) Load 11(inF0)
+             308:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 307
+                              Store 13(inF2) 308
+             310:    6(float) Load 11(inF0)
+             311:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 310
+                              Store 309(r055) 311
+             313:    6(float) Load 11(inF0)
+             314:    6(float) Load 12(inF1)
+             315:    6(float) Load 13(inF2)
+             316:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 313 314 315
+                              Store 312(r056) 316
              318:    6(float) Load 11(inF0)
-             319:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 318
-                              Store 317(r060) 319
+             319:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 318
+                              Store 317(r057) 319
              321:    6(float) Load 11(inF0)
-             322:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 321
-                              Store 320(r061) 322
-                              ReturnValue 165
+             322:    6(float) Load 12(inF1)
+             323:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 321 322
+                              Store 320(r058) 323
+             325:    6(float) Load 11(inF0)
+             326:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 325
+                              Store 324(r059) 326
+             328:    6(float) Load 11(inF0)
+             329:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 328
+                              Store 327(r060) 329
+             331:    6(float) Load 11(inF0)
+             332:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 331
+                              Store 330(r061) 332
+                              ReturnValue 175
                               FunctionEnd
 22(PixelShaderFunction1(vf1;vf1;vf1;):    6(float) Function None 18
         19(inF0):      7(ptr) FunctionParameter
         20(inF1):      7(ptr) FunctionParameter
         21(inF2):      7(ptr) FunctionParameter
               23:             Label
-                              ReturnValue 165
+                              ReturnValue 175
                               FunctionEnd
 34(PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2;):   24(fvec2) Function None 28
         29(inF0):     25(ptr) FunctionParameter
@@ -6807,295 +6540,295 @@ gl_FragCoord origin is upper left
         32(inU0):     27(ptr) FunctionParameter
         33(inU1):     27(ptr) FunctionParameter
               35:             Label
-       327(r000):    122(ptr) Variable Function
-       330(r001):     25(ptr) Variable Function
-       333(r002):     25(ptr) Variable Function
-       336(r003):    122(ptr) Variable Function
-       339(r004):     25(ptr) Variable Function
-       344(r005):    343(ptr) Variable Function
-       347(r006):     27(ptr) Variable Function
-       350(r007):     25(ptr) Variable Function
-       353(r009):     25(ptr) Variable Function
-       356(r010):     25(ptr) Variable Function
-       360(r011):     25(ptr) Variable Function
-       363(r012):     25(ptr) Variable Function
-       376(r013):     25(ptr) Variable Function
-       379(r015):     25(ptr) Variable Function
-       382(r016):     27(ptr) Variable Function
-       386(r017):     25(ptr) Variable Function
-       389(r018):     25(ptr) Variable Function
-       392(r019):     25(ptr) Variable Function
-       395(r020):     25(ptr) Variable Function
-       398(r021):     25(ptr) Variable Function
-       401(r022):     25(ptr) Variable Function
-       404(r023):     25(ptr) Variable Function
-       407(r026):      7(ptr) Variable Function
-       411(r027):      7(ptr) Variable Function
-       415(r028):     25(ptr) Variable Function
-       418(r029):     25(ptr) Variable Function
-       421(r030):     25(ptr) Variable Function
-       426(r031):     27(ptr) Variable Function
-       430(r032):     27(ptr) Variable Function
-       432(r033):     25(ptr) Variable Function
-       435(r035):     25(ptr) Variable Function
-       439(r036):     25(ptr) Variable Function
-       442(r037):     25(ptr) Variable Function
-       448(r038):     25(ptr) Variable Function
-       452(r039):    451(ptr) Variable Function
-       455(r040):    451(ptr) Variable Function
-       458(r041):     25(ptr) Variable Function
-      462(r039a):     25(ptr) Variable Function
-       467(r042):      7(ptr) Variable Function
-       470(r043):     25(ptr) Variable Function
-       473(r044):     25(ptr) Variable Function
-       477(r045):     25(ptr) Variable Function
-       480(r046):     25(ptr) Variable Function
-       484(r047):     25(ptr) Variable Function
-       488(r048):     25(ptr) Variable Function
-       491(r049):     25(ptr) Variable Function
-       495(r050):     25(ptr) Variable Function
-       498(r051):     25(ptr) Variable Function
-       502(r052):     25(ptr) Variable Function
-       506(r053):     25(ptr) Variable Function
-       511(r054):     27(ptr) Variable Function
-       515(r055):     25(ptr) Variable Function
-       518(r056):     25(ptr) Variable Function
-       521(r057):     25(ptr) Variable Function
-       526(r058):     25(ptr) Variable Function
-       529(r059):     25(ptr) Variable Function
-       536(r060):     25(ptr) Variable Function
-       539(r061):     25(ptr) Variable Function
-       544(r062):     25(ptr) Variable Function
-       547(r063):     25(ptr) Variable Function
-       551(r064):     25(ptr) Variable Function
-       554(r065):     25(ptr) Variable Function
-       557(r066):     25(ptr) Variable Function
-             328:   24(fvec2) Load 29(inF0)
-             329:   121(bool) All 328
-                              Store 327(r000) 329
-             331:   24(fvec2) Load 29(inF0)
-             332:   24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 331
-                              Store 330(r001) 332
-             334:   24(fvec2) Load 29(inF0)
-             335:   24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 334
-                              Store 333(r002) 335
-             337:   24(fvec2) Load 29(inF0)
-             338:   121(bool) Any 337
-                              Store 336(r003) 338
-             340:   24(fvec2) Load 29(inF0)
-             341:   24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 340
-                              Store 339(r004) 341
-             345:   24(fvec2) Load 29(inF0)
-             346:  342(ivec2) Bitcast 345
-                              Store 344(r005) 346
-             348:   24(fvec2) Load 29(inF0)
-             349:   26(ivec2) Bitcast 348
-                              Store 347(r006) 349
-             351:   26(ivec2) Load 32(inU0)
-             352:   24(fvec2) Bitcast 351
-                              Store 350(r007) 352
-             354:   24(fvec2) Load 29(inF0)
-             355:   24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 354
-                              Store 353(r009) 355
-             357:   24(fvec2) Load 29(inF0)
-             358:   24(fvec2) Load 30(inF1)
-             359:   24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 357 358
-                              Store 356(r010) 359
-             361:   24(fvec2) Load 29(inF0)
-             362:   24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 361
-                              Store 360(r011) 362
+       337(r000):    132(ptr) Variable Function
+       340(r001):     25(ptr) Variable Function
+       343(r002):     25(ptr) Variable Function
+       346(r003):    132(ptr) Variable Function
+       349(r004):     25(ptr) Variable Function
+       354(r005):    353(ptr) Variable Function
+       357(r006):     27(ptr) Variable Function
+       360(r007):     25(ptr) Variable Function
+       363(r009):     25(ptr) Variable Function
+       366(r010):     25(ptr) Variable Function
+       370(r011):     25(ptr) Variable Function
+       373(r012):     25(ptr) Variable Function
+       386(r013):     25(ptr) Variable Function
+       389(r015):     25(ptr) Variable Function
+       392(r016):     27(ptr) Variable Function
+       396(r017):     25(ptr) Variable Function
+       399(r018):     25(ptr) Variable Function
+       402(r019):     25(ptr) Variable Function
+       405(r020):     25(ptr) Variable Function
+       408(r021):     25(ptr) Variable Function
+       411(r022):     25(ptr) Variable Function
+       414(r023):     25(ptr) Variable Function
+       417(r026):      7(ptr) Variable Function
+       421(r027):      7(ptr) Variable Function
+       425(r028):     25(ptr) Variable Function
+       428(r029):     25(ptr) Variable Function
+       431(r030):     25(ptr) Variable Function
+       436(r031):     27(ptr) Variable Function
+       440(r032):     27(ptr) Variable Function
+       442(r033):     25(ptr) Variable Function
+       445(r035):     25(ptr) Variable Function
+       449(r036):     25(ptr) Variable Function
+       452(r037):     25(ptr) Variable Function
+       458(r038):     25(ptr) Variable Function
+       462(r039):    461(ptr) Variable Function
+       465(r040):    461(ptr) Variable Function
+       468(r041):     25(ptr) Variable Function
+      472(r039a):     25(ptr) Variable Function
+       477(r042):      7(ptr) Variable Function
+       480(r043):     25(ptr) Variable Function
+       483(r044):     25(ptr) Variable Function
+       487(r045):     25(ptr) Variable Function
+       490(r046):     25(ptr) Variable Function
+       494(r047):     25(ptr) Variable Function
+       498(r048):     25(ptr) Variable Function
+       501(r049):     25(ptr) Variable Function
+       505(r050):     25(ptr) Variable Function
+       508(r051):     25(ptr) Variable Function
+       512(r052):     25(ptr) Variable Function
+       516(r053):     25(ptr) Variable Function
+       521(r054):     27(ptr) Variable Function
+       525(r055):     25(ptr) Variable Function
+       528(r056):     25(ptr) Variable Function
+       531(r057):     25(ptr) Variable Function
+       536(r058):     25(ptr) Variable Function
+       539(r059):     25(ptr) Variable Function
+       546(r060):     25(ptr) Variable Function
+       549(r061):     25(ptr) Variable Function
+       554(r062):     25(ptr) Variable Function
+       557(r063):     25(ptr) Variable Function
+       561(r064):     25(ptr) Variable Function
+       564(r065):     25(ptr) Variable Function
+       567(r066):     25(ptr) Variable Function
+             338:   24(fvec2) Load 29(inF0)
+             339:   131(bool) All 338
+                              Store 337(r000) 339
+             341:   24(fvec2) Load 29(inF0)
+             342:   24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 341
+                              Store 340(r001) 342
+             344:   24(fvec2) Load 29(inF0)
+             345:   24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 344
+                              Store 343(r002) 345
+             347:   24(fvec2) Load 29(inF0)
+             348:   131(bool) Any 347
+                              Store 346(r003) 348
+             350:   24(fvec2) Load 29(inF0)
+             351:   24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 350
+                              Store 349(r004) 351
+             355:   24(fvec2) Load 29(inF0)
+             356:  352(ivec2) Bitcast 355
+                              Store 354(r005) 356
+             358:   24(fvec2) Load 29(inF0)
+             359:   26(ivec2) Bitcast 358
+                              Store 357(r006) 359
+             361:   26(ivec2) Load 32(inU0)
+             362:   24(fvec2) Bitcast 361
+                              Store 360(r007) 362
              364:   24(fvec2) Load 29(inF0)
-             365:   24(fvec2) Load 30(inF1)
-             366:   24(fvec2) Load 31(inF2)
-             367:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 364 365 366
-                              Store 363(r012) 367
-             368:   24(fvec2) Load 29(inF0)
-             371:  370(bvec2) FOrdLessThan 368 369
-             372:   121(bool) Any 371
-                              SelectionMerge 374 None
-                              BranchConditional 372 373 374
-             373:               Label
+             365:   24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 364
+                              Store 363(r009) 365
+             367:   24(fvec2) Load 29(inF0)
+             368:   24(fvec2) Load 30(inF1)
+             369:   24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 367 368
+                              Store 366(r010) 369
+             371:   24(fvec2) Load 29(inF0)
+             372:   24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 371
+                              Store 370(r011) 372
+             374:   24(fvec2) Load 29(inF0)
+             375:   24(fvec2) Load 30(inF1)
+             376:   24(fvec2) Load 31(inF2)
+             377:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 374 375 376
+                              Store 373(r012) 377
+             378:   24(fvec2) Load 29(inF0)
+             381:  380(bvec2) FOrdLessThan 378 379
+             382:   131(bool) Any 381
+                              SelectionMerge 384 None
+                              BranchConditional 382 383 384
+             383:               Label
                                 Kill
-             374:             Label
-             377:   24(fvec2) Load 29(inF0)
-             378:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 377
-                              Store 376(r013) 378
-             380:   24(fvec2) Load 29(inF0)
-             381:   24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 380
-                              Store 379(r015) 381
-             385:   26(ivec2) BitCount 384
-                              Store 382(r016) 385
+             384:             Label
              387:   24(fvec2) Load 29(inF0)
-             388:   24(fvec2) DPdx 387
-                              Store 386(r017) 388
+             388:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 387
+                              Store 386(r013) 388
              390:   24(fvec2) Load 29(inF0)
-             391:   24(fvec2) DPdxCoarse 390
-                              Store 389(r018) 391
-             393:   24(fvec2) Load 29(inF0)
-             394:   24(fvec2) DPdxFine 393
-                              Store 392(r019) 394
-             396:   24(fvec2) Load 29(inF0)
-             397:   24(fvec2) DPdy 396
-                              Store 395(r020) 397
-             399:   24(fvec2) Load 29(inF0)
-             400:   24(fvec2) DPdyCoarse 399
-                              Store 398(r021) 400
-             402:   24(fvec2) Load 29(inF0)
-             403:   24(fvec2) DPdyFine 402
-                              Store 401(r022) 403
-             405:   24(fvec2) Load 29(inF0)
-             406:   24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 405
-                              Store 404(r023) 406
-             408:   24(fvec2) Load 29(inF0)
-             409:   24(fvec2) Load 30(inF1)
-             410:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 408 409
-                              Store 407(r026) 410
+             391:   24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 390
+                              Store 389(r015) 391
+             395:   26(ivec2) BitCount 394
+                              Store 392(r016) 395
+             397:   24(fvec2) Load 29(inF0)
+             398:   24(fvec2) DPdx 397
+                              Store 396(r017) 398
+             400:   24(fvec2) Load 29(inF0)
+             401:   24(fvec2) DPdxCoarse 400
+                              Store 399(r018) 401
+             403:   24(fvec2) Load 29(inF0)
+             404:   24(fvec2) DPdxFine 403
+                              Store 402(r019) 404
+             406:   24(fvec2) Load 29(inF0)
+             407:   24(fvec2) DPdy 406
+                              Store 405(r020) 407
+             409:   24(fvec2) Load 29(inF0)
+             410:   24(fvec2) DPdyCoarse 409
+                              Store 408(r021) 410
              412:   24(fvec2) Load 29(inF0)
-             413:   24(fvec2) Load 30(inF1)
-             414:    6(float) Dot 412 413
-                              Store 411(r027) 414
-             416:   24(fvec2) Load 29(inF0)
-             417:   24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 416
-                              Store 415(r028) 417
-             419:   24(fvec2) Load 29(inF0)
-             420:   24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 419
-                              Store 418(r029) 420
+             413:   24(fvec2) DPdyFine 412
+                              Store 411(r022) 413
+             415:   24(fvec2) Load 29(inF0)
+             416:   24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 415
+                              Store 414(r023) 416
+             418:   24(fvec2) Load 29(inF0)
+             419:   24(fvec2) Load 30(inF1)
+             420:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 418 419
+                              Store 417(r026) 420
              422:   24(fvec2) Load 29(inF0)
              423:   24(fvec2) Load 30(inF1)
-             424:   24(fvec2) Load 31(inF2)
-             425:   24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 422 423 424
-                              Store 421(r030) 425
-             429:   26(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 428
-                              Store 426(r031) 429
-             431:   26(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 428
-                              Store 430(r032) 431
-             433:   24(fvec2) Load 29(inF0)
-             434:   24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 433
-                              Store 432(r033) 434
-             436:   24(fvec2) Load 29(inF0)
-             437:   24(fvec2) Load 30(inF1)
-             438:   24(fvec2) FMod 436 437
-                              Store 435(r035) 438
-             440:   24(fvec2) Load 29(inF0)
-             441:   24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 440
-                              Store 439(r036) 441
+             424:    6(float) Dot 422 423
+                              Store 421(r027) 424
+             426:   24(fvec2) Load 29(inF0)
+             427:   24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 426
+                              Store 425(r028) 427
+             429:   24(fvec2) Load 29(inF0)
+             430:   24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 429
+                              Store 428(r029) 430
+             432:   24(fvec2) Load 29(inF0)
+             433:   24(fvec2) Load 30(inF1)
+             434:   24(fvec2) Load 31(inF2)
+             435:   24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 432 433 434
+                              Store 431(r030) 435
+             439:   26(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 438
+                              Store 436(r031) 439
+             441:   26(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 438
+                              Store 440(r032) 441
              443:   24(fvec2) Load 29(inF0)
-             445:444(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 443
-             446:  342(ivec2) CompositeExtract 445 1
-                              Store 30(inF1) 446
-             447:   24(fvec2) CompositeExtract 445 0
-                              Store 442(r037) 447
-             449:   24(fvec2) Load 29(inF0)
-             450:   24(fvec2) Fwidth 449
-                              Store 448(r038) 450
+             444:   24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 443
+                              Store 442(r033) 444
+             446:   24(fvec2) Load 29(inF0)
+             447:   24(fvec2) Load 30(inF1)
+             448:   24(fvec2) FMod 446 447
+                              Store 445(r035) 448
+             450:   24(fvec2) Load 29(inF0)
+             451:   24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 450
+                              Store 449(r036) 451
              453:   24(fvec2) Load 29(inF0)
-             454:  370(bvec2) IsInf 453
-                              Store 452(r039) 454
-             456:   24(fvec2) Load 29(inF0)
-             457:  370(bvec2) IsNan 456
-                              Store 455(r040) 457
+             455:454(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 453
+             456:  352(ivec2) CompositeExtract 455 1
+                              Store 30(inF1) 456
+             457:   24(fvec2) CompositeExtract 455 0
+                              Store 452(r037) 457
              459:   24(fvec2) Load 29(inF0)
-             460:   24(fvec2) Load 30(inF1)
-             461:   24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 459 460
-                              Store 458(r041) 461
+             460:   24(fvec2) Fwidth 459
+                              Store 458(r038) 460
              463:   24(fvec2) Load 29(inF0)
-             464:   24(fvec2) Load 30(inF1)
-             465:   24(fvec2) Load 31(inF2)
-             466:   24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 463 464 465
-                              Store 462(r039a) 466
-             468:   24(fvec2) Load 29(inF0)
-             469:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 468
-                              Store 467(r042) 469
-             471:   24(fvec2) Load 29(inF0)
-             472:   24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 471
-                              Store 470(r043) 472
-             474:   24(fvec2) Load 29(inF0)
-             475:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 474
-             476:   24(fvec2) VectorTimesScalar 475 253
-                              Store 473(r044) 476
+             464:  380(bvec2) IsInf 463
+                              Store 462(r039) 464
+             466:   24(fvec2) Load 29(inF0)
+             467:  380(bvec2) IsNan 466
+                              Store 465(r040) 467
+             469:   24(fvec2) Load 29(inF0)
+             470:   24(fvec2) Load 30(inF1)
+             471:   24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 469 470
+                              Store 468(r041) 471
+             473:   24(fvec2) Load 29(inF0)
+             474:   24(fvec2) Load 30(inF1)
+             475:   24(fvec2) Load 31(inF2)
+             476:   24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 473 474 475
+                              Store 472(r039a) 476
              478:   24(fvec2) Load 29(inF0)
-             479:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 478
-                              Store 477(r045) 479
+             479:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 478
+                              Store 477(r042) 479
              481:   24(fvec2) Load 29(inF0)
-             482:   24(fvec2) Load 30(inF1)
-             483:   24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 481 482
-                              Store 480(r046) 483
-             485:   24(fvec2) Load 29(inF0)
-             486:   24(fvec2) Load 30(inF1)
-             487:   24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 485 486
-                              Store 484(r047) 487
-             489:   24(fvec2) Load 29(inF0)
-             490:   24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 489
-                              Store 488(r048) 490
-             492:   24(fvec2) Load 29(inF0)
-             493:   24(fvec2) Load 30(inF1)
-             494:   24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 492 493
-                              Store 491(r049) 494
-             496:   24(fvec2) Load 29(inF0)
-             497:   24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 496
-                              Store 495(r050) 497
+             482:   24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 481
+                              Store 480(r043) 482
+             484:   24(fvec2) Load 29(inF0)
+             485:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 484
+             486:   24(fvec2) VectorTimesScalar 485 263
+                              Store 483(r044) 486
+             488:   24(fvec2) Load 29(inF0)
+             489:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 488
+                              Store 487(r045) 489
+             491:   24(fvec2) Load 29(inF0)
+             492:   24(fvec2) Load 30(inF1)
+             493:   24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 491 492
+                              Store 490(r046) 493
+             495:   24(fvec2) Load 29(inF0)
+             496:   24(fvec2) Load 30(inF1)
+             497:   24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 495 496
+                              Store 494(r047) 497
              499:   24(fvec2) Load 29(inF0)
-             500:   24(fvec2) CompositeConstruct 274 274
-             501:   24(fvec2) FDiv 500 499
-                              Store 498(r051) 501
-             503:   24(fvec2) Load 29(inF0)
-             504:   24(fvec2) Load 30(inF1)
-             505:   24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 503 504
-                              Store 502(r052) 505
-             507:   24(fvec2) Load 29(inF0)
-             508:   24(fvec2) Load 30(inF1)
-             510:   24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 507 508 509
-                              Store 506(r053) 510
-             514:   26(ivec2) BitReverse 513
-                              Store 511(r054) 514
-             516:   24(fvec2) Load 29(inF0)
-             517:   24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 516
-                              Store 515(r055) 517
-             519:   24(fvec2) Load 29(inF0)
-             520:   24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 519
-                              Store 518(r056) 520
-             522:   24(fvec2) Load 29(inF0)
-             523:   24(fvec2) CompositeConstruct 165 165
-             524:   24(fvec2) CompositeConstruct 274 274
-             525:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 522 523 524
-                              Store 521(r057) 525
-             527:   24(fvec2) Load 29(inF0)
-             528:   24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 527
-                              Store 526(r058) 528
-             530:   24(fvec2) Load 29(inF0)
-             531:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 530
-                              Store 529(r059) 531
+             500:   24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 499
+                              Store 498(r048) 500
+             502:   24(fvec2) Load 29(inF0)
+             503:   24(fvec2) Load 30(inF1)
+             504:   24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 502 503
+                              Store 501(r049) 504
+             506:   24(fvec2) Load 29(inF0)
+             507:   24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 506
+                              Store 505(r050) 507
+             509:   24(fvec2) Load 29(inF0)
+             510:   24(fvec2) CompositeConstruct 284 284
+             511:   24(fvec2) FDiv 510 509
+                              Store 508(r051) 511
+             513:   24(fvec2) Load 29(inF0)
+             514:   24(fvec2) Load 30(inF1)
+             515:   24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 513 514
+                              Store 512(r052) 515
+             517:   24(fvec2) Load 29(inF0)
+             518:   24(fvec2) Load 30(inF1)
+             520:   24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 517 518 519
+                              Store 516(r053) 520
+             524:   26(ivec2) BitReverse 523
+                              Store 521(r054) 524
+             526:   24(fvec2) Load 29(inF0)
+             527:   24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 526
+                              Store 525(r055) 527
+             529:   24(fvec2) Load 29(inF0)
+             530:   24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 529
+                              Store 528(r056) 530
              532:   24(fvec2) Load 29(inF0)
-             533:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 532
-                              Store 30(inF1) 533
-             534:   24(fvec2) Load 29(inF0)
-             535:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 534
-                              Store 31(inF2) 535
+             533:   24(fvec2) CompositeConstruct 175 175
+             534:   24(fvec2) CompositeConstruct 284 284
+             535:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 532 533 534
+                              Store 531(r057) 535
              537:   24(fvec2) Load 29(inF0)
-             538:   24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 537
-                              Store 536(r060) 538
+             538:   24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 537
+                              Store 536(r058) 538
              540:   24(fvec2) Load 29(inF0)
-             541:   24(fvec2) Load 30(inF1)
-             542:   24(fvec2) Load 31(inF2)
-             543:   24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 540 541 542
-                              Store 539(r061) 543
-             545:   24(fvec2) Load 29(inF0)
-             546:   24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 545
-                              Store 544(r062) 546
-             548:   24(fvec2) Load 29(inF0)
-             549:   24(fvec2) Load 30(inF1)
-             550:   24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 548 549
-                              Store 547(r063) 550
-             552:   24(fvec2) Load 29(inF0)
-             553:   24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 552
-                              Store 551(r064) 553
+             541:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 540
+                              Store 539(r059) 541
+             542:   24(fvec2) Load 29(inF0)
+             543:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 542
+                              Store 30(inF1) 543
+             544:   24(fvec2) Load 29(inF0)
+             545:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 544
+                              Store 31(inF2) 545
+             547:   24(fvec2) Load 29(inF0)
+             548:   24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 547
+                              Store 546(r060) 548
+             550:   24(fvec2) Load 29(inF0)
+             551:   24(fvec2) Load 30(inF1)
+             552:   24(fvec2) Load 31(inF2)
+             553:   24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 550 551 552
+                              Store 549(r061) 553
              555:   24(fvec2) Load 29(inF0)
-             556:   24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 555
-                              Store 554(r065) 556
+             556:   24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 555
+                              Store 554(r062) 556
              558:   24(fvec2) Load 29(inF0)
-             559:   24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 558
-                              Store 557(r066) 559
-                              ReturnValue 560
+             559:   24(fvec2) Load 30(inF1)
+             560:   24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 558 559
+                              Store 557(r063) 560
+             562:   24(fvec2) Load 29(inF0)
+             563:   24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 562
+                              Store 561(r064) 563
+             565:   24(fvec2) Load 29(inF0)
+             566:   24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 565
+                              Store 564(r065) 566
+             568:   24(fvec2) Load 29(inF0)
+             569:   24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 568
+                              Store 567(r066) 569
+                              ReturnValue 570
                               FunctionEnd
 46(PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3;):   36(fvec3) Function None 40
         41(inF0):     37(ptr) FunctionParameter
@@ -7104,670 +6837,979 @@ gl_FragCoord origin is upper left
         44(inU0):     39(ptr) FunctionParameter
         45(inU1):     39(ptr) FunctionParameter
               47:             Label
-       563(r000):    122(ptr) Variable Function
-       566(r001):     37(ptr) Variable Function
-       569(r002):     37(ptr) Variable Function
-       572(r003):    122(ptr) Variable Function
-       575(r004):     37(ptr) Variable Function
-       580(r005):    579(ptr) Variable Function
-       583(r006):     39(ptr) Variable Function
-       586(r007):     37(ptr) Variable Function
-       589(r009):     37(ptr) Variable Function
-       592(r010):     37(ptr) Variable Function
-       596(r011):     37(ptr) Variable Function
-       599(r012):     37(ptr) Variable Function
-       612(r013):     37(ptr) Variable Function
-       615(r014):     37(ptr) Variable Function
-       618(r015):     39(ptr) Variable Function
-       622(r016):     37(ptr) Variable Function
-       626(r017):     37(ptr) Variable Function
-       629(r018):     37(ptr) Variable Function
-       632(r019):     37(ptr) Variable Function
-       635(r020):     37(ptr) Variable Function
-       638(r021):     37(ptr) Variable Function
-       641(r022):     37(ptr) Variable Function
-       644(r023):     37(ptr) Variable Function
-       647(r024):      7(ptr) Variable Function
-       651(r025):      7(ptr) Variable Function
-       655(r029):     37(ptr) Variable Function
-       658(r030):     37(ptr) Variable Function
-       661(r031):     37(ptr) Variable Function
-       666(r032):     39(ptr) Variable Function
-       670(r033):     39(ptr) Variable Function
-       672(r034):     37(ptr) Variable Function
-       675(r036):     37(ptr) Variable Function
-       679(r037):     37(ptr) Variable Function
-       682(r038):     37(ptr) Variable Function
-       688(r039):     37(ptr) Variable Function
-       692(r040):    691(ptr) Variable Function
-       695(r041):    691(ptr) Variable Function
-       698(r042):     37(ptr) Variable Function
-      702(r039a):     37(ptr) Variable Function
-      707(r039b):     37(ptr) Variable Function
-       713(r043):      7(ptr) Variable Function
-       716(r044):     37(ptr) Variable Function
-       719(r045):     37(ptr) Variable Function
-       723(r046):     37(ptr) Variable Function
-       726(r047):     37(ptr) Variable Function
-       730(r048):     37(ptr) Variable Function
-       734(r049):     37(ptr) Variable Function
-       737(r050):     37(ptr) Variable Function
-       741(r051):     37(ptr) Variable Function
-       744(r052):     37(ptr) Variable Function
-       748(r053):     37(ptr) Variable Function
-       752(r054):     37(ptr) Variable Function
-       756(r055):     39(ptr) Variable Function
-       759(r056):     37(ptr) Variable Function
-       762(r057):     37(ptr) Variable Function
-       765(r058):     37(ptr) Variable Function
-       770(r059):     37(ptr) Variable Function
-       773(r060):     37(ptr) Variable Function
-       780(r061):     37(ptr) Variable Function
-       783(r062):     37(ptr) Variable Function
-       788(r063):     37(ptr) Variable Function
-       791(r064):     37(ptr) Variable Function
-       795(r065):     37(ptr) Variable Function
-       798(r066):     37(ptr) Variable Function
-       801(r067):     37(ptr) Variable Function
-             564:   36(fvec3) Load 41(inF0)
-             565:   121(bool) All 564
-                              Store 563(r000) 565
-             567:   36(fvec3) Load 41(inF0)
-             568:   36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 567
-                              Store 566(r001) 568
-             570:   36(fvec3) Load 41(inF0)
-             571:   36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 570
-                              Store 569(r002) 571
-             573:   36(fvec3) Load 41(inF0)
-             574:   121(bool) Any 573
-                              Store 572(r003) 574
-             576:   36(fvec3) Load 41(inF0)
-             577:   36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 576
-                              Store 575(r004) 577
-             581:   36(fvec3) Load 41(inF0)
-             582:  578(ivec3) Bitcast 581
-                              Store 580(r005) 582
-             584:   36(fvec3) Load 41(inF0)
-             585:   38(ivec3) Bitcast 584
-                              Store 583(r006) 585
-             587:   38(ivec3) Load 44(inU0)
-             588:   36(fvec3) Bitcast 587
-                              Store 586(r007) 588
-             590:   36(fvec3) Load 41(inF0)
-             591:   36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 590
-                              Store 589(r009) 591
-             593:   36(fvec3) Load 41(inF0)
-             594:   36(fvec3) Load 42(inF1)
-             595:   36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 593 594
-                              Store 592(r010) 595
-             597:   36(fvec3) Load 41(inF0)
-             598:   36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 597
-                              Store 596(r011) 598
+       573(r000):    132(ptr) Variable Function
+       576(r001):     37(ptr) Variable Function
+       579(r002):     37(ptr) Variable Function
+       582(r003):    132(ptr) Variable Function
+       585(r004):     37(ptr) Variable Function
+       590(r005):    589(ptr) Variable Function
+       593(r006):     39(ptr) Variable Function
+       596(r007):     37(ptr) Variable Function
+       599(r009):     37(ptr) Variable Function
+       602(r010):     37(ptr) Variable Function
+       606(r011):     37(ptr) Variable Function
+       609(r012):     37(ptr) Variable Function
+       622(r013):     37(ptr) Variable Function
+       625(r014):     37(ptr) Variable Function
+       628(r015):     39(ptr) Variable Function
+       632(r016):     37(ptr) Variable Function
+       636(r017):     37(ptr) Variable Function
+       639(r018):     37(ptr) Variable Function
+       642(r019):     37(ptr) Variable Function
+       645(r020):     37(ptr) Variable Function
+       648(r021):     37(ptr) Variable Function
+       651(r022):     37(ptr) Variable Function
+       654(r023):     37(ptr) Variable Function
+       657(r024):      7(ptr) Variable Function
+       661(r025):      7(ptr) Variable Function
+       665(r029):     37(ptr) Variable Function
+       668(r030):     37(ptr) Variable Function
+       671(r031):     37(ptr) Variable Function
+       676(r032):     39(ptr) Variable Function
+       680(r033):     39(ptr) Variable Function
+       682(r034):     37(ptr) Variable Function
+       685(r036):     37(ptr) Variable Function
+       689(r037):     37(ptr) Variable Function
+       692(r038):     37(ptr) Variable Function
+       698(r039):     37(ptr) Variable Function
+       702(r040):    701(ptr) Variable Function
+       705(r041):    701(ptr) Variable Function
+       708(r042):     37(ptr) Variable Function
+      712(r039a):     37(ptr) Variable Function
+      717(r039b):     37(ptr) Variable Function
+       723(r043):      7(ptr) Variable Function
+       726(r044):     37(ptr) Variable Function
+       729(r045):     37(ptr) Variable Function
+       733(r046):     37(ptr) Variable Function
+       736(r047):     37(ptr) Variable Function
+       740(r048):     37(ptr) Variable Function
+       744(r049):     37(ptr) Variable Function
+       747(r050):     37(ptr) Variable Function
+       751(r051):     37(ptr) Variable Function
+       754(r052):     37(ptr) Variable Function
+       758(r053):     37(ptr) Variable Function
+       762(r054):     37(ptr) Variable Function
+       766(r055):     39(ptr) Variable Function
+       769(r056):     37(ptr) Variable Function
+       772(r057):     37(ptr) Variable Function
+       775(r058):     37(ptr) Variable Function
+       780(r059):     37(ptr) Variable Function
+       783(r060):     37(ptr) Variable Function
+       790(r061):     37(ptr) Variable Function
+       793(r062):     37(ptr) Variable Function
+       798(r063):     37(ptr) Variable Function
+       801(r064):     37(ptr) Variable Function
+       805(r065):     37(ptr) Variable Function
+       808(r066):     37(ptr) Variable Function
+       811(r067):     37(ptr) Variable Function
+             574:   36(fvec3) Load 41(inF0)
+             575:   131(bool) All 574
+                              Store 573(r000) 575
+             577:   36(fvec3) Load 41(inF0)
+             578:   36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 577
+                              Store 576(r001) 578
+             580:   36(fvec3) Load 41(inF0)
+             581:   36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 580
+                              Store 579(r002) 581
+             583:   36(fvec3) Load 41(inF0)
+             584:   131(bool) Any 583
+                              Store 582(r003) 584
+             586:   36(fvec3) Load 41(inF0)
+             587:   36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 586
+                              Store 585(r004) 587
+             591:   36(fvec3) Load 41(inF0)
+             592:  588(ivec3) Bitcast 591
+                              Store 590(r005) 592
+             594:   36(fvec3) Load 41(inF0)
+             595:   38(ivec3) Bitcast 594
+                              Store 593(r006) 595
+             597:   38(ivec3) Load 44(inU0)
+             598:   36(fvec3) Bitcast 597
+                              Store 596(r007) 598
              600:   36(fvec3) Load 41(inF0)
-             601:   36(fvec3) Load 42(inF1)
-             602:   36(fvec3) Load 43(inF2)
-             603:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 600 601 602
-                              Store 599(r012) 603
-             604:   36(fvec3) Load 41(inF0)
-             607:  606(bvec3) FOrdLessThan 604 605
-             608:   121(bool) Any 607
-                              SelectionMerge 610 None
-                              BranchConditional 608 609 610
-             609:               Label
+             601:   36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 600
+                              Store 599(r009) 601
+             603:   36(fvec3) Load 41(inF0)
+             604:   36(fvec3) Load 42(inF1)
+             605:   36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 603 604
+                              Store 602(r010) 605
+             607:   36(fvec3) Load 41(inF0)
+             608:   36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 607
+                              Store 606(r011) 608
+             610:   36(fvec3) Load 41(inF0)
+             611:   36(fvec3) Load 42(inF1)
+             612:   36(fvec3) Load 43(inF2)
+             613:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 610 611 612
+                              Store 609(r012) 613
+             614:   36(fvec3) Load 41(inF0)
+             617:  616(bvec3) FOrdLessThan 614 615
+             618:   131(bool) Any 617
+                              SelectionMerge 620 None
+                              BranchConditional 618 619 620
+             619:               Label
                                 Kill
-             610:             Label
-             613:   36(fvec3) Load 41(inF0)
-             614:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 613
-                              Store 612(r013) 614
-             616:   36(fvec3) Load 41(inF0)
-             617:   36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 616
-                              Store 615(r014) 617
-             621:   38(ivec3) BitCount 620
-                              Store 618(r015) 621
+             620:             Label
              623:   36(fvec3) Load 41(inF0)
-             624:   36(fvec3) Load 42(inF1)
-             625:   36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 623 624
-                              Store 622(r016) 625
-             627:   36(fvec3) Load 41(inF0)
-             628:   36(fvec3) DPdx 627
-                              Store 626(r017) 628
-             630:   36(fvec3) Load 41(inF0)
-             631:   36(fvec3) DPdxCoarse 630
-                              Store 629(r018) 631
+             624:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 623
+                              Store 622(r013) 624
+             626:   36(fvec3) Load 41(inF0)
+             627:   36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 626
+                              Store 625(r014) 627
+             631:   38(ivec3) BitCount 630
+                              Store 628(r015) 631
              633:   36(fvec3) Load 41(inF0)
-             634:   36(fvec3) DPdxFine 633
-                              Store 632(r019) 634
-             636:   36(fvec3) Load 41(inF0)
-             637:   36(fvec3) DPdy 636
-                              Store 635(r020) 637
-             639:   36(fvec3) Load 41(inF0)
-             640:   36(fvec3) DPdyCoarse 639
-                              Store 638(r021) 640
-             642:   36(fvec3) Load 41(inF0)
-             643:   36(fvec3) DPdyFine 642
-                              Store 641(r022) 643
-             645:   36(fvec3) Load 41(inF0)
-             646:   36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 645
-                              Store 644(r023) 646
-             648:   36(fvec3) Load 41(inF0)
-             649:   36(fvec3) Load 42(inF1)
-             650:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 648 649
-                              Store 647(r024) 650
+             634:   36(fvec3) Load 42(inF1)
+             635:   36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 633 634
+                              Store 632(r016) 635
+             637:   36(fvec3) Load 41(inF0)
+             638:   36(fvec3) DPdx 637
+                              Store 636(r017) 638
+             640:   36(fvec3) Load 41(inF0)
+             641:   36(fvec3) DPdxCoarse 640
+                              Store 639(r018) 641
+             643:   36(fvec3) Load 41(inF0)
+             644:   36(fvec3) DPdxFine 643
+                              Store 642(r019) 644
+             646:   36(fvec3) Load 41(inF0)
+             647:   36(fvec3) DPdy 646
+                              Store 645(r020) 647
+             649:   36(fvec3) Load 41(inF0)
+             650:   36(fvec3) DPdyCoarse 649
+                              Store 648(r021) 650
              652:   36(fvec3) Load 41(inF0)
-             653:   36(fvec3) Load 42(inF1)
-             654:    6(float) Dot 652 653
-                              Store 651(r025) 654
-             656:   36(fvec3) Load 41(inF0)
-             657:   36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 656
-                              Store 655(r029) 657
-             659:   36(fvec3) Load 41(inF0)
-             660:   36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 659
-                              Store 658(r030) 660
+             653:   36(fvec3) DPdyFine 652
+                              Store 651(r022) 653
+             655:   36(fvec3) Load 41(inF0)
+             656:   36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 655
+                              Store 654(r023) 656
+             658:   36(fvec3) Load 41(inF0)
+             659:   36(fvec3) Load 42(inF1)
+             660:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 658 659
+                              Store 657(r024) 660
              662:   36(fvec3) Load 41(inF0)
              663:   36(fvec3) Load 42(inF1)
-             664:   36(fvec3) Load 43(inF2)
-             665:   36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 662 663 664
-                              Store 661(r031) 665
-             669:   38(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 668
-                              Store 666(r032) 669
-             671:   38(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 668
-                              Store 670(r033) 671
-             673:   36(fvec3) Load 41(inF0)
-             674:   36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 673
-                              Store 672(r034) 674
-             676:   36(fvec3) Load 41(inF0)
-             677:   36(fvec3) Load 42(inF1)
-             678:   36(fvec3) FMod 676 677
-                              Store 675(r036) 678
-             680:   36(fvec3) Load 41(inF0)
-             681:   36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 680
-                              Store 679(r037) 681
+             664:    6(float) Dot 662 663
+                              Store 661(r025) 664
+             666:   36(fvec3) Load 41(inF0)
+             667:   36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 666
+                              Store 665(r029) 667
+             669:   36(fvec3) Load 41(inF0)
+             670:   36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 669
+                              Store 668(r030) 670
+             672:   36(fvec3) Load 41(inF0)
+             673:   36(fvec3) Load 42(inF1)
+             674:   36(fvec3) Load 43(inF2)
+             675:   36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 672 673 674
+                              Store 671(r031) 675
+             679:   38(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 678
+                              Store 676(r032) 679
+             681:   38(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 678
+                              Store 680(r033) 681
              683:   36(fvec3) Load 41(inF0)
-             685:684(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 683
-             686:  578(ivec3) CompositeExtract 685 1
-                              Store 42(inF1) 686
-             687:   36(fvec3) CompositeExtract 685 0
-                              Store 682(r038) 687
-             689:   36(fvec3) Load 41(inF0)
-             690:   36(fvec3) Fwidth 689
-                              Store 688(r039) 690
+             684:   36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 683
+                              Store 682(r034) 684
+             686:   36(fvec3) Load 41(inF0)
+             687:   36(fvec3) Load 42(inF1)
+             688:   36(fvec3) FMod 686 687
+                              Store 685(r036) 688
+             690:   36(fvec3) Load 41(inF0)
+             691:   36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 690
+                              Store 689(r037) 691
              693:   36(fvec3) Load 41(inF0)
-             694:  606(bvec3) IsInf 693
-                              Store 692(r040) 694
-             696:   36(fvec3) Load 41(inF0)
-             697:  606(bvec3) IsNan 696
-                              Store 695(r041) 697
+             695:694(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 693
+             696:  588(ivec3) CompositeExtract 695 1
+                              Store 42(inF1) 696
+             697:   36(fvec3) CompositeExtract 695 0
+                              Store 692(r038) 697
              699:   36(fvec3) Load 41(inF0)
-             700:   36(fvec3) Load 42(inF1)
-             701:   36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 699 700
-                              Store 698(r042) 701
+             700:   36(fvec3) Fwidth 699
+                              Store 698(r039) 700
              703:   36(fvec3) Load 41(inF0)
-             704:   36(fvec3) Load 42(inF1)
-             705:   36(fvec3) Load 43(inF2)
-             706:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 703 704 705
-                              Store 702(r039a) 706
-             708:   36(fvec3) Load 41(inF0)
-             709:   36(fvec3) Load 42(inF1)
-             711:   36(fvec3) CompositeConstruct 710 710 710
-             712:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 708 709 711
-                              Store 707(r039b) 712
-             714:   36(fvec3) Load 41(inF0)
-             715:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 714
-                              Store 713(r043) 715
-             717:   36(fvec3) Load 41(inF0)
-             718:   36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 717
-                              Store 716(r044) 718
-             720:   36(fvec3) Load 41(inF0)
-             721:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 720
-             722:   36(fvec3) VectorTimesScalar 721 253
-                              Store 719(r045) 722
+             704:  616(bvec3) IsInf 703
+                              Store 702(r040) 704
+             706:   36(fvec3) Load 41(inF0)
+             707:  616(bvec3) IsNan 706
+                              Store 705(r041) 707
+             709:   36(fvec3) Load 41(inF0)
+             710:   36(fvec3) Load 42(inF1)
+             711:   36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 709 710
+                              Store 708(r042) 711
+             713:   36(fvec3) Load 41(inF0)
+             714:   36(fvec3) Load 42(inF1)
+             715:   36(fvec3) Load 43(inF2)
+             716:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 713 714 715
+                              Store 712(r039a) 716
+             718:   36(fvec3) Load 41(inF0)
+             719:   36(fvec3) Load 42(inF1)
+             721:   36(fvec3) CompositeConstruct 720 720 720
+             722:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 718 719 721
+                              Store 717(r039b) 722
              724:   36(fvec3) Load 41(inF0)
-             725:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 724
-                              Store 723(r046) 725
+             725:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 724
+                              Store 723(r043) 725
              727:   36(fvec3) Load 41(inF0)
-             728:   36(fvec3) Load 42(inF1)
-             729:   36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 727 728
-                              Store 726(r047) 729
-             731:   36(fvec3) Load 41(inF0)
-             732:   36(fvec3) Load 42(inF1)
-             733:   36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 731 732
-                              Store 730(r048) 733
-             735:   36(fvec3) Load 41(inF0)
-             736:   36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 735
-                              Store 734(r049) 736
-             738:   36(fvec3) Load 41(inF0)
-             739:   36(fvec3) Load 42(inF1)
-             740:   36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 738 739
-                              Store 737(r050) 740
-             742:   36(fvec3) Load 41(inF0)
-             743:   36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 742
-                              Store 741(r051) 743
+             728:   36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 727
+                              Store 726(r044) 728
+             730:   36(fvec3) Load 41(inF0)
+             731:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 730
+             732:   36(fvec3) VectorTimesScalar 731 263
+                              Store 729(r045) 732
+             734:   36(fvec3) Load 41(inF0)
+             735:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 734
+                              Store 733(r046) 735
+             737:   36(fvec3) Load 41(inF0)
+             738:   36(fvec3) Load 42(inF1)
+             739:   36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 737 738
+                              Store 736(r047) 739
+             741:   36(fvec3) Load 41(inF0)
+             742:   36(fvec3) Load 42(inF1)
+             743:   36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 741 742
+                              Store 740(r048) 743
              745:   36(fvec3) Load 41(inF0)
-             746:   36(fvec3) CompositeConstruct 274 274 274
-             747:   36(fvec3) FDiv 746 745
-                              Store 744(r052) 747
-             749:   36(fvec3) Load 41(inF0)
-             750:   36(fvec3) Load 42(inF1)
-             751:   36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 749 750
-                              Store 748(r053) 751
-             753:   36(fvec3) Load 41(inF0)
-             754:   36(fvec3) Load 42(inF1)
-             755:   36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 753 754 509
-                              Store 752(r054) 755
-             758:   38(ivec3) BitReverse 757
-                              Store 756(r055) 758
-             760:   36(fvec3) Load 41(inF0)
-             761:   36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 760
-                              Store 759(r056) 761
+             746:   36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 745
+                              Store 744(r049) 746
+             748:   36(fvec3) Load 41(inF0)
+             749:   36(fvec3) Load 42(inF1)
+             750:   36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 748 749
+                              Store 747(r050) 750
+             752:   36(fvec3) Load 41(inF0)
+             753:   36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 752
+                              Store 751(r051) 753
+             755:   36(fvec3) Load 41(inF0)
+             756:   36(fvec3) CompositeConstruct 284 284 284
+             757:   36(fvec3) FDiv 756 755
+                              Store 754(r052) 757
+             759:   36(fvec3) Load 41(inF0)
+             760:   36(fvec3) Load 42(inF1)
+             761:   36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 759 760
+                              Store 758(r053) 761
              763:   36(fvec3) Load 41(inF0)
-             764:   36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 763
-                              Store 762(r057) 764
-             766:   36(fvec3) Load 41(inF0)
-             767:   36(fvec3) CompositeConstruct 165 165 165
-             768:   36(fvec3) CompositeConstruct 274 274 274
-             769:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 766 767 768
-                              Store 765(r058) 769
-             771:   36(fvec3) Load 41(inF0)
-             772:   36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 771
-                              Store 770(r059) 772
-             774:   36(fvec3) Load 41(inF0)
-             775:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 774
-                              Store 773(r060) 775
+             764:   36(fvec3) Load 42(inF1)
+             765:   36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 763 764 519
+                              Store 762(r054) 765
+             768:   38(ivec3) BitReverse 767
+                              Store 766(r055) 768
+             770:   36(fvec3) Load 41(inF0)
+             771:   36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 770
+                              Store 769(r056) 771
+             773:   36(fvec3) Load 41(inF0)
+             774:   36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 773
+                              Store 772(r057) 774
              776:   36(fvec3) Load 41(inF0)
-             777:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 776
-                              Store 42(inF1) 777
-             778:   36(fvec3) Load 41(inF0)
-             779:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 778
-                              Store 43(inF2) 779
+             777:   36(fvec3) CompositeConstruct 175 175 175
+             778:   36(fvec3) CompositeConstruct 284 284 284
+             779:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 776 777 778
+                              Store 775(r058) 779
              781:   36(fvec3) Load 41(inF0)
-             782:   36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 781
-                              Store 780(r061) 782
+             782:   36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 781
+                              Store 780(r059) 782
              784:   36(fvec3) Load 41(inF0)
-             785:   36(fvec3) Load 42(inF1)
-             786:   36(fvec3) Load 43(inF2)
-             787:   36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 784 785 786
-                              Store 783(r062) 787
-             789:   36(fvec3) Load 41(inF0)
-             790:   36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 789
-                              Store 788(r063) 790
-             792:   36(fvec3) Load 41(inF0)
-             793:   36(fvec3) Load 42(inF1)
-             794:   36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 792 793
-                              Store 791(r064) 794
-             796:   36(fvec3) Load 41(inF0)
-             797:   36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 796
-                              Store 795(r065) 797
+             785:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 784
+                              Store 783(r060) 785
+             786:   36(fvec3) Load 41(inF0)
+             787:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 786
+                              Store 42(inF1) 787
+             788:   36(fvec3) Load 41(inF0)
+             789:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 788
+                              Store 43(inF2) 789
+             791:   36(fvec3) Load 41(inF0)
+             792:   36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 791
+                              Store 790(r061) 792
+             794:   36(fvec3) Load 41(inF0)
+             795:   36(fvec3) Load 42(inF1)
+             796:   36(fvec3) Load 43(inF2)
+             797:   36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 794 795 796
+                              Store 793(r062) 797
              799:   36(fvec3) Load 41(inF0)
-             800:   36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 799
-                              Store 798(r066) 800
+             800:   36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 799
+                              Store 798(r063) 800
              802:   36(fvec3) Load 41(inF0)
-             803:   36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 802
-                              Store 801(r067) 803
-                              ReturnValue 805
+             803:   36(fvec3) Load 42(inF1)
+             804:   36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 802 803
+                              Store 801(r064) 804
+             806:   36(fvec3) Load 41(inF0)
+             807:   36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 806
+                              Store 805(r065) 807
+             809:   36(fvec3) Load 41(inF0)
+             810:   36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 809
+                              Store 808(r066) 810
+             812:   36(fvec3) Load 41(inF0)
+             813:   36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 812
+                              Store 811(r067) 813
+                              ReturnValue 815
+                              FunctionEnd
+58(PixelShaderFunction(vf4;vf4;vf4;vu4;vu4;):   48(fvec4) Function None 52
+        53(inF0):     49(ptr) FunctionParameter
+        54(inF1):     49(ptr) FunctionParameter
+        55(inF2):     49(ptr) FunctionParameter
+        56(inU0):     51(ptr) FunctionParameter
+        57(inU1):     51(ptr) FunctionParameter
+              59:             Label
+       818(r000):    132(ptr) Variable Function
+       821(r001):     49(ptr) Variable Function
+       824(r002):     49(ptr) Variable Function
+       827(r003):    132(ptr) Variable Function
+       830(r004):     49(ptr) Variable Function
+       835(r005):    834(ptr) Variable Function
+       838(r006):     51(ptr) Variable Function
+       841(r007):     49(ptr) Variable Function
+       844(r009):     49(ptr) Variable Function
+       847(r010):     49(ptr) Variable Function
+       851(r011):     49(ptr) Variable Function
+       854(r012):     49(ptr) Variable Function
+       867(r013):     49(ptr) Variable Function
+       870(r014):     49(ptr) Variable Function
+       873(r015):     51(ptr) Variable Function
+       876(r016):     49(ptr) Variable Function
+       879(r017):     49(ptr) Variable Function
+       882(r018):     49(ptr) Variable Function
+       885(r019):     49(ptr) Variable Function
+       888(r020):     49(ptr) Variable Function
+       891(r021):     49(ptr) Variable Function
+       894(r022):     49(ptr) Variable Function
+       897(r023):      7(ptr) Variable Function
+       901(r024):      7(ptr) Variable Function
+       905(r025):     49(ptr) Variable Function
+       916(r029):     49(ptr) Variable Function
+       919(r030):     49(ptr) Variable Function
+       922(r031):     49(ptr) Variable Function
+       927(r032):     51(ptr) Variable Function
+       932(r033):     51(ptr) Variable Function
+       934(r034):     49(ptr) Variable Function
+       937(r036):     49(ptr) Variable Function
+       941(r037):     49(ptr) Variable Function
+       944(r038):     49(ptr) Variable Function
+       950(r039):     49(ptr) Variable Function
+       954(r040):    953(ptr) Variable Function
+       957(r041):    953(ptr) Variable Function
+       960(r042):     49(ptr) Variable Function
+      964(r039a):     49(ptr) Variable Function
+       969(r043):      7(ptr) Variable Function
+       972(r044):     49(ptr) Variable Function
+       975(r045):     49(ptr) Variable Function
+       979(r046):     49(ptr) Variable Function
+       982(r047):     49(ptr) Variable Function
+       986(r048):     49(ptr) Variable Function
+       990(r049):     49(ptr) Variable Function
+       993(r050):     49(ptr) Variable Function
+       997(r051):     49(ptr) Variable Function
+      1000(r052):     49(ptr) Variable Function
+      1004(r053):     49(ptr) Variable Function
+      1008(r054):     49(ptr) Variable Function
+      1012(r055):     51(ptr) Variable Function
+      1015(r056):     49(ptr) Variable Function
+      1018(r057):     49(ptr) Variable Function
+      1021(r058):     49(ptr) Variable Function
+      1026(r059):     49(ptr) Variable Function
+      1029(r060):     49(ptr) Variable Function
+      1036(r061):     49(ptr) Variable Function
+      1039(r062):     49(ptr) Variable Function
+      1044(r063):     49(ptr) Variable Function
+      1047(r064):     49(ptr) Variable Function
+      1051(r065):     49(ptr) Variable Function
+      1054(r066):     49(ptr) Variable Function
+      1057(r067):     49(ptr) Variable Function
+             819:   48(fvec4) Load 53(inF0)
+             820:   131(bool) All 819
+                              Store 818(r000) 820
+             822:   48(fvec4) Load 53(inF0)
+             823:   48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 822
+                              Store 821(r001) 823
+             825:   48(fvec4) Load 53(inF0)
+             826:   48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 825
+                              Store 824(r002) 826
+             828:   48(fvec4) Load 53(inF0)
+             829:   131(bool) Any 828
+                              Store 827(r003) 829
+             831:   48(fvec4) Load 53(inF0)
+             832:   48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 831
+                              Store 830(r004) 832
+             836:   48(fvec4) Load 53(inF0)
+             837:  833(ivec4) Bitcast 836
+                              Store 835(r005) 837
+             839:   48(fvec4) Load 53(inF0)
+             840:   50(ivec4) Bitcast 839
+                              Store 838(r006) 840
+             842:   50(ivec4) Load 56(inU0)
+             843:   48(fvec4) Bitcast 842
+                              Store 841(r007) 843
+             845:   48(fvec4) Load 53(inF0)
+             846:   48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 845
+                              Store 844(r009) 846
+             848:   48(fvec4) Load 53(inF0)
+             849:   48(fvec4) Load 54(inF1)
+             850:   48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 848 849
+                              Store 847(r010) 850
+             852:   48(fvec4) Load 53(inF0)
+             853:   48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 852
+                              Store 851(r011) 853
+             855:   48(fvec4) Load 53(inF0)
+             856:   48(fvec4) Load 54(inF1)
+             857:   48(fvec4) Load 55(inF2)
+             858:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 855 856 857
+                              Store 854(r012) 858
+             859:   48(fvec4) Load 53(inF0)
+             862:  861(bvec4) FOrdLessThan 859 860
+             863:   131(bool) Any 862
+                              SelectionMerge 865 None
+                              BranchConditional 863 864 865
+             864:               Label
+                                Kill
+             865:             Label
+             868:   48(fvec4) Load 53(inF0)
+             869:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 868
+                              Store 867(r013) 869
+             871:   48(fvec4) Load 53(inF0)
+             872:   48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 871
+                              Store 870(r014) 872
+             875:   50(ivec4) BitCount 874
+                              Store 873(r015) 875
+             877:   48(fvec4) Load 53(inF0)
+             878:   48(fvec4) DPdx 877
+                              Store 876(r016) 878
+             880:   48(fvec4) Load 53(inF0)
+             881:   48(fvec4) DPdxCoarse 880
+                              Store 879(r017) 881
+             883:   48(fvec4) Load 53(inF0)
+             884:   48(fvec4) DPdxFine 883
+                              Store 882(r018) 884
+             886:   48(fvec4) Load 53(inF0)
+             887:   48(fvec4) DPdy 886
+                              Store 885(r019) 887
+             889:   48(fvec4) Load 53(inF0)
+             890:   48(fvec4) DPdyCoarse 889
+                              Store 888(r020) 890
+             892:   48(fvec4) Load 53(inF0)
+             893:   48(fvec4) DPdyFine 892
+                              Store 891(r021) 893
+             895:   48(fvec4) Load 53(inF0)
+             896:   48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 895
+                              Store 894(r022) 896
+             898:   48(fvec4) Load 53(inF0)
+             899:   48(fvec4) Load 54(inF1)
+             900:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 898 899
+                              Store 897(r023) 900
+             902:   48(fvec4) Load 53(inF0)
+             903:   48(fvec4) Load 54(inF1)
+             904:    6(float) Dot 902 903
+                              Store 901(r024) 904
+             906:      7(ptr) AccessChain 53(inF0) 522
+             907:    6(float) Load 906
+             908:      7(ptr) AccessChain 54(inF1) 522
+             909:    6(float) Load 908
+             910:    6(float) FMul 907 909
+             911:      7(ptr) AccessChain 53(inF0) 288
+             912:    6(float) Load 911
+             913:      7(ptr) AccessChain 54(inF1) 393
+             914:    6(float) Load 913
+             915:   48(fvec4) CompositeConstruct 284 910 912 914
+                              Store 905(r025) 915
+             917:   48(fvec4) Load 53(inF0)
+             918:   48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 917
+                              Store 916(r029) 918
+             920:   48(fvec4) Load 53(inF0)
+             921:   48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 920
+                              Store 919(r030) 921
+             923:   48(fvec4) Load 53(inF0)
+             924:   48(fvec4) Load 54(inF1)
+             925:   48(fvec4) Load 55(inF2)
+             926:   48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 923 924 925
+                              Store 922(r031) 926
+             931:   50(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 930
+                              Store 927(r032) 931
+             933:   50(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 930
+                              Store 932(r033) 933
+             935:   48(fvec4) Load 53(inF0)
+             936:   48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 935
+                              Store 934(r034) 936
+             938:   48(fvec4) Load 53(inF0)
+             939:   48(fvec4) Load 54(inF1)
+             940:   48(fvec4) FMod 938 939
+                              Store 937(r036) 940
+             942:   48(fvec4) Load 53(inF0)
+             943:   48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 942
+                              Store 941(r037) 943
+             945:   48(fvec4) Load 53(inF0)
+             947:946(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 945
+             948:  833(ivec4) CompositeExtract 947 1
+                              Store 54(inF1) 948
+             949:   48(fvec4) CompositeExtract 947 0
+                              Store 944(r038) 949
+             951:   48(fvec4) Load 53(inF0)
+             952:   48(fvec4) Fwidth 951
+                              Store 950(r039) 952
+             955:   48(fvec4) Load 53(inF0)
+             956:  861(bvec4) IsInf 955
+                              Store 954(r040) 956
+             958:   48(fvec4) Load 53(inF0)
+             959:  861(bvec4) IsNan 958
+                              Store 957(r041) 959
+             961:   48(fvec4) Load 53(inF0)
+             962:   48(fvec4) Load 54(inF1)
+             963:   48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 961 962
+                              Store 960(r042) 963
+             965:   48(fvec4) Load 53(inF0)
+             966:   48(fvec4) Load 54(inF1)
+             967:   48(fvec4) Load 55(inF2)
+             968:   48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 965 966 967
+                              Store 964(r039a) 968
+             970:   48(fvec4) Load 53(inF0)
+             971:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 970
+                              Store 969(r043) 971
+             973:   48(fvec4) Load 53(inF0)
+             974:   48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 973
+                              Store 972(r044) 974
+             976:   48(fvec4) Load 53(inF0)
+             977:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 976
+             978:   48(fvec4) VectorTimesScalar 977 263
+                              Store 975(r045) 978
+             980:   48(fvec4) Load 53(inF0)
+             981:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 980
+                              Store 979(r046) 981
+             983:   48(fvec4) Load 53(inF0)
+             984:   48(fvec4) Load 54(inF1)
+             985:   48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 983 984
+                              Store 982(r047) 985
+             987:   48(fvec4) Load 53(inF0)
+             988:   48(fvec4) Load 54(inF1)
+             989:   48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 987 988
+                              Store 986(r048) 989
+             991:   48(fvec4) Load 53(inF0)
+             992:   48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 991
+                              Store 990(r049) 992
+             994:   48(fvec4) Load 53(inF0)
+             995:   48(fvec4) Load 54(inF1)
+             996:   48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 994 995
+                              Store 993(r050) 996
+             998:   48(fvec4) Load 53(inF0)
+             999:   48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 998
+                              Store 997(r051) 999
+            1001:   48(fvec4) Load 53(inF0)
+            1002:   48(fvec4) CompositeConstruct 284 284 284 284
+            1003:   48(fvec4) FDiv 1002 1001
+                              Store 1000(r052) 1003
+            1005:   48(fvec4) Load 53(inF0)
+            1006:   48(fvec4) Load 54(inF1)
+            1007:   48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1005 1006
+                              Store 1004(r053) 1007
+            1009:   48(fvec4) Load 53(inF0)
+            1010:   48(fvec4) Load 54(inF1)
+            1011:   48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1009 1010 519
+                              Store 1008(r054) 1011
+            1014:   50(ivec4) BitReverse 1013
+                              Store 1012(r055) 1014
+            1016:   48(fvec4) Load 53(inF0)
+            1017:   48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1016
+                              Store 1015(r056) 1017
+            1019:   48(fvec4) Load 53(inF0)
+            1020:   48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1019
+                              Store 1018(r057) 1020
+            1022:   48(fvec4) Load 53(inF0)
+            1023:   48(fvec4) CompositeConstruct 175 175 175 175
+            1024:   48(fvec4) CompositeConstruct 284 284 284 284
+            1025:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1022 1023 1024
+                              Store 1021(r058) 1025
+            1027:   48(fvec4) Load 53(inF0)
+            1028:   48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1027
+                              Store 1026(r059) 1028
+            1030:   48(fvec4) Load 53(inF0)
+            1031:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1030
+                              Store 1029(r060) 1031
+            1032:   48(fvec4) Load 53(inF0)
+            1033:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1032
+                              Store 54(inF1) 1033
+            1034:   48(fvec4) Load 53(inF0)
+            1035:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1034
+                              Store 55(inF2) 1035
+            1037:   48(fvec4) Load 53(inF0)
+            1038:   48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1037
+                              Store 1036(r061) 1038
+            1040:   48(fvec4) Load 53(inF0)
+            1041:   48(fvec4) Load 54(inF1)
+            1042:   48(fvec4) Load 55(inF2)
+            1043:   48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1040 1041 1042
+                              Store 1039(r062) 1043
+            1045:   48(fvec4) Load 53(inF0)
+            1046:   48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1045
+                              Store 1044(r063) 1046
+            1048:   48(fvec4) Load 53(inF0)
+            1049:   48(fvec4) Load 54(inF1)
+            1050:   48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1048 1049
+                              Store 1047(r064) 1050
+            1052:   48(fvec4) Load 53(inF0)
+            1053:   48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1052
+                              Store 1051(r065) 1053
+            1055:   48(fvec4) Load 53(inF0)
+            1056:   48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1055
+                              Store 1054(r066) 1056
+            1058:   48(fvec4) Load 53(inF0)
+            1059:   48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1058
+                              Store 1057(r067) 1059
+                              ReturnValue 1061
                               FunctionEnd
-54(PixelShaderFunction2x2(mf22;mf22;mf22;):          48 Function None 50
-        51(inF0):     49(ptr) FunctionParameter
-        52(inF1):     49(ptr) FunctionParameter
-        53(inF2):     49(ptr) FunctionParameter
-              55:             Label
-      1064(r000):    122(ptr) Variable Function
-      1067(r001):     49(ptr) Variable Function
-      1072(r003):    122(ptr) Variable Function
-      1075(r004):     49(ptr) Variable Function
-      1078(r005):     49(ptr) Variable Function
-      1081(r006):     49(ptr) Variable Function
-      1085(r007):     49(ptr) Variable Function
-      1096(r008):     49(ptr) Variable Function
-      1101(r009):     49(ptr) Variable Function
-      1104(r010):     49(ptr) Variable Function
-      1107(r011):     49(ptr) Variable Function
-      1110(r012):     49(ptr) Variable Function
-      1113(r013):     49(ptr) Variable Function
-      1116(r014):     49(ptr) Variable Function
-      1119(r015):     49(ptr) Variable Function
-      1122(r016):     49(ptr) Variable Function
-      1125(r017):     49(ptr) Variable Function
+66(PixelShaderFunction2x2(mf22;mf22;mf22;):          60 Function None 62
+        63(inF0):     61(ptr) FunctionParameter
+        64(inF1):     61(ptr) FunctionParameter
+        65(inF2):     61(ptr) FunctionParameter
+              67:             Label
+      1064(r000):    132(ptr) Variable Function
+      1067(r001):     61(ptr) Variable Function
+      1072(r003):    132(ptr) Variable Function
+      1075(r004):     61(ptr) Variable Function
+      1078(r005):     61(ptr) Variable Function
+      1081(r006):     61(ptr) Variable Function
+      1085(r007):     61(ptr) Variable Function
+      1096(r008):     61(ptr) Variable Function
+      1101(r009):     61(ptr) Variable Function
+      1104(r010):     61(ptr) Variable Function
+      1107(r011):     61(ptr) Variable Function
+      1110(r012):     61(ptr) Variable Function
+      1113(r013):     61(ptr) Variable Function
+      1116(r014):     61(ptr) Variable Function
+      1119(r015):     61(ptr) Variable Function
+      1122(r016):     61(ptr) Variable Function
+      1125(r017):     61(ptr) Variable Function
       1128(r018):      7(ptr) Variable Function
-      1131(r019):     49(ptr) Variable Function
-      1134(R020):     49(ptr) Variable Function
-      1137(r021):     49(ptr) Variable Function
-      1140(r022):     49(ptr) Variable Function
-      1150(r023):     49(ptr) Variable Function
-      1153(r024):     49(ptr) Variable Function
-      1159(r025):     49(ptr) Variable Function
-      1162(r026):     49(ptr) Variable Function
-     1166(r026a):     49(ptr) Variable Function
-      1171(r027):     49(ptr) Variable Function
-      1174(r028):     49(ptr) Variable Function
-      1178(r029):     49(ptr) Variable Function
-      1181(r030):     49(ptr) Variable Function
-      1185(r031):     49(ptr) Variable Function
-      1189(r032):     49(ptr) Variable Function
-      1193(r033):     49(ptr) Variable Function
-      1196(r034):     49(ptr) Variable Function
-      1199(r035):     49(ptr) Variable Function
-      1202(r036):     49(ptr) Variable Function
-      1207(r037):     49(ptr) Variable Function
-      1210(r038):     49(ptr) Variable Function
-      1217(r039):     49(ptr) Variable Function
-      1220(r049):     49(ptr) Variable Function
-      1225(r041):     49(ptr) Variable Function
-      1228(r042):     49(ptr) Variable Function
-      1232(r043):     49(ptr) Variable Function
-      1235(r044):     49(ptr) Variable Function
-      1240(r046):     49(ptr) Variable Function
-            1065:          48 Load 51(inF0)
-            1066:   121(bool) All 1065
+      1131(r019):     61(ptr) Variable Function
+      1134(R020):     61(ptr) Variable Function
+      1137(r021):     61(ptr) Variable Function
+      1140(r022):     61(ptr) Variable Function
+      1150(r023):     61(ptr) Variable Function
+      1153(r024):     61(ptr) Variable Function
+      1159(r025):     61(ptr) Variable Function
+      1162(r026):     61(ptr) Variable Function
+     1166(r026a):     61(ptr) Variable Function
+      1171(r027):     61(ptr) Variable Function
+      1174(r028):     61(ptr) Variable Function
+      1178(r029):     61(ptr) Variable Function
+      1181(r030):     61(ptr) Variable Function
+      1185(r031):     61(ptr) Variable Function
+      1189(r032):     61(ptr) Variable Function
+      1193(r033):     61(ptr) Variable Function
+      1196(r034):     61(ptr) Variable Function
+      1199(r035):     61(ptr) Variable Function
+      1202(r036):     61(ptr) Variable Function
+      1207(r037):     61(ptr) Variable Function
+      1210(r038):     61(ptr) Variable Function
+      1217(r039):     61(ptr) Variable Function
+      1220(r049):     61(ptr) Variable Function
+      1225(r041):     61(ptr) Variable Function
+      1228(r042):     61(ptr) Variable Function
+      1232(r043):     61(ptr) Variable Function
+      1235(r044):     61(ptr) Variable Function
+      1240(r046):     61(ptr) Variable Function
+            1065:          60 Load 63(inF0)
+            1066:   131(bool) All 1065
                               Store 1064(r000) 1066
-            1068:          48 Load 51(inF0)
-            1069:          48 ExtInst 1(GLSL.std.450) 4(FAbs) 1068
+            1068:          60 Load 63(inF0)
+            1069:          60 ExtInst 1(GLSL.std.450) 4(FAbs) 1068
                               Store 1067(r001) 1069
-            1070:          48 Load 51(inF0)
-            1071:          48 ExtInst 1(GLSL.std.450) 17(Acos) 1070
-            1073:          48 Load 51(inF0)
-            1074:   121(bool) Any 1073
+            1070:          60 Load 63(inF0)
+            1071:          60 ExtInst 1(GLSL.std.450) 17(Acos) 1070
+            1073:          60 Load 63(inF0)
+            1074:   131(bool) Any 1073
                               Store 1072(r003) 1074
-            1076:          48 Load 51(inF0)
-            1077:          48 ExtInst 1(GLSL.std.450) 16(Asin) 1076
+            1076:          60 Load 63(inF0)
+            1077:          60 ExtInst 1(GLSL.std.450) 16(Asin) 1076
                               Store 1075(r004) 1077
-            1079:          48 Load 51(inF0)
-            1080:          48 ExtInst 1(GLSL.std.450) 18(Atan) 1079
+            1079:          60 Load 63(inF0)
+            1080:          60 ExtInst 1(GLSL.std.450) 18(Atan) 1079
                               Store 1078(r005) 1080
-            1082:          48 Load 51(inF0)
-            1083:          48 Load 52(inF1)
-            1084:          48 ExtInst 1(GLSL.std.450) 25(Atan2) 1082 1083
+            1082:          60 Load 63(inF0)
+            1083:          60 Load 64(inF1)
+            1084:          60 ExtInst 1(GLSL.std.450) 25(Atan2) 1082 1083
                               Store 1081(r006) 1084
-            1086:          48 Load 51(inF0)
-            1087:          48 ExtInst 1(GLSL.std.450) 9(Ceil) 1086
+            1086:          60 Load 63(inF0)
+            1087:          60 ExtInst 1(GLSL.std.450) 9(Ceil) 1086
                               Store 1085(r007) 1087
-            1088:          48 Load 51(inF0)
+            1088:          60 Load 63(inF0)
             1091:        1090 FOrdLessThan 1088 1089
-            1092:   121(bool) Any 1091
+            1092:   131(bool) Any 1091
                               SelectionMerge 1094 None
                               BranchConditional 1092 1093 1094
             1093:               Label
                                 Kill
             1094:             Label
-            1097:          48 Load 51(inF0)
-            1098:          48 Load 52(inF1)
-            1099:          48 Load 53(inF2)
-            1100:          48 ExtInst 1(GLSL.std.450) 43(FClamp) 1097 1098 1099
+            1097:          60 Load 63(inF0)
+            1098:          60 Load 64(inF1)
+            1099:          60 Load 65(inF2)
+            1100:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 1097 1098 1099
                               Store 1096(r008) 1100
-            1102:          48 Load 51(inF0)
-            1103:          48 ExtInst 1(GLSL.std.450) 14(Cos) 1102
+            1102:          60 Load 63(inF0)
+            1103:          60 ExtInst 1(GLSL.std.450) 14(Cos) 1102
                               Store 1101(r009) 1103
-            1105:          48 Load 51(inF0)
-            1106:          48 ExtInst 1(GLSL.std.450) 20(Cosh) 1105
+            1105:          60 Load 63(inF0)
+            1106:          60 ExtInst 1(GLSL.std.450) 20(Cosh) 1105
                               Store 1104(r010) 1106
-            1108:          48 Load 51(inF0)
-            1109:          48 DPdx 1108
+            1108:          60 Load 63(inF0)
+            1109:          60 DPdx 1108
                               Store 1107(r011) 1109
-            1111:          48 Load 51(inF0)
-            1112:          48 DPdxCoarse 1111
+            1111:          60 Load 63(inF0)
+            1112:          60 DPdxCoarse 1111
                               Store 1110(r012) 1112
-            1114:          48 Load 51(inF0)
-            1115:          48 DPdxFine 1114
+            1114:          60 Load 63(inF0)
+            1115:          60 DPdxFine 1114
                               Store 1113(r013) 1115
-            1117:          48 Load 51(inF0)
-            1118:          48 DPdy 1117
+            1117:          60 Load 63(inF0)
+            1118:          60 DPdy 1117
                               Store 1116(r014) 1118
-            1120:          48 Load 51(inF0)
-            1121:          48 DPdyCoarse 1120
+            1120:          60 Load 63(inF0)
+            1121:          60 DPdyCoarse 1120
                               Store 1119(r015) 1121
-            1123:          48 Load 51(inF0)
-            1124:          48 DPdyFine 1123
+            1123:          60 Load 63(inF0)
+            1124:          60 DPdyFine 1123
                               Store 1122(r016) 1124
-            1126:          48 Load 51(inF0)
-            1127:          48 ExtInst 1(GLSL.std.450) 12(Degrees) 1126
+            1126:          60 Load 63(inF0)
+            1127:          60 ExtInst 1(GLSL.std.450) 12(Degrees) 1126
                               Store 1125(r017) 1127
-            1129:          48 Load 51(inF0)
+            1129:          60 Load 63(inF0)
             1130:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1129
                               Store 1128(r018) 1130
-            1132:          48 Load 51(inF0)
-            1133:          48 ExtInst 1(GLSL.std.450) 27(Exp) 1132
+            1132:          60 Load 63(inF0)
+            1133:          60 ExtInst 1(GLSL.std.450) 27(Exp) 1132
                               Store 1131(r019) 1133
-            1135:          48 Load 51(inF0)
-            1136:          48 ExtInst 1(GLSL.std.450) 29(Exp2) 1135
+            1135:          60 Load 63(inF0)
+            1136:          60 ExtInst 1(GLSL.std.450) 29(Exp2) 1135
                               Store 1134(R020) 1136
-            1138:          48 Load 51(inF0)
-            1139:          48 ExtInst 1(GLSL.std.450) 8(Floor) 1138
+            1138:          60 Load 63(inF0)
+            1139:          60 ExtInst 1(GLSL.std.450) 8(Floor) 1138
                               Store 1137(r021) 1139
-            1141:          48 Load 51(inF0)
-            1142:          48 Load 52(inF1)
+            1141:          60 Load 63(inF0)
+            1142:          60 Load 64(inF1)
             1143:   24(fvec2) CompositeExtract 1141 0
             1144:   24(fvec2) CompositeExtract 1142 0
             1145:   24(fvec2) FMod 1143 1144
             1146:   24(fvec2) CompositeExtract 1141 1
             1147:   24(fvec2) CompositeExtract 1142 1
             1148:   24(fvec2) FMod 1146 1147
-            1149:          48 CompositeConstruct 1145 1148
+            1149:          60 CompositeConstruct 1145 1148
                               Store 1140(r022) 1149
-            1151:          48 Load 51(inF0)
-            1152:          48 ExtInst 1(GLSL.std.450) 10(Fract) 1151
+            1151:          60 Load 63(inF0)
+            1152:          60 ExtInst 1(GLSL.std.450) 10(Fract) 1151
                               Store 1150(r023) 1152
-            1154:          48 Load 51(inF0)
+            1154:          60 Load 63(inF0)
             1156:1155(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1154
-            1157:  342(ivec2) CompositeExtract 1156 1
-                              Store 52(inF1) 1157
-            1158:          48 CompositeExtract 1156 0
+            1157:  352(ivec2) CompositeExtract 1156 1
+                              Store 64(inF1) 1157
+            1158:          60 CompositeExtract 1156 0
                               Store 1153(r024) 1158
-            1160:          48 Load 51(inF0)
-            1161:          48 Fwidth 1160
+            1160:          60 Load 63(inF0)
+            1161:          60 Fwidth 1160
                               Store 1159(r025) 1161
-            1163:          48 Load 51(inF0)
-            1164:          48 Load 52(inF1)
-            1165:          48 ExtInst 1(GLSL.std.450) 53(Ldexp) 1163 1164
+            1163:          60 Load 63(inF0)
+            1164:          60 Load 64(inF1)
+            1165:          60 ExtInst 1(GLSL.std.450) 53(Ldexp) 1163 1164
                               Store 1162(r026) 1165
-            1167:          48 Load 51(inF0)
-            1168:          48 Load 52(inF1)
-            1169:          48 Load 53(inF2)
-            1170:          48 ExtInst 1(GLSL.std.450) 46(FMix) 1167 1168 1169
+            1167:          60 Load 63(inF0)
+            1168:          60 Load 64(inF1)
+            1169:          60 Load 65(inF2)
+            1170:          60 ExtInst 1(GLSL.std.450) 46(FMix) 1167 1168 1169
                               Store 1166(r026a) 1170
-            1172:          48 Load 51(inF0)
-            1173:          48 ExtInst 1(GLSL.std.450) 28(Log) 1172
+            1172:          60 Load 63(inF0)
+            1173:          60 ExtInst 1(GLSL.std.450) 28(Log) 1172
                               Store 1171(r027) 1173
-            1175:          48 Load 51(inF0)
-            1176:          48 ExtInst 1(GLSL.std.450) 30(Log2) 1175
-            1177:          48 MatrixTimesScalar 1176 253
+            1175:          60 Load 63(inF0)
+            1176:          60 ExtInst 1(GLSL.std.450) 30(Log2) 1175
+            1177:          60 MatrixTimesScalar 1176 263
                               Store 1174(r028) 1177
-            1179:          48 Load 51(inF0)
-            1180:          48 ExtInst 1(GLSL.std.450) 30(Log2) 1179
+            1179:          60 Load 63(inF0)
+            1180:          60 ExtInst 1(GLSL.std.450) 30(Log2) 1179
                               Store 1178(r029) 1180
-            1182:          48 Load 51(inF0)
-            1183:          48 Load 52(inF1)
-            1184:          48 ExtInst 1(GLSL.std.450) 40(FMax) 1182 1183
+            1182:          60 Load 63(inF0)
+            1183:          60 Load 64(inF1)
+            1184:          60 ExtInst 1(GLSL.std.450) 40(FMax) 1182 1183
                               Store 1181(r030) 1184
-            1186:          48 Load 51(inF0)
-            1187:          48 Load 52(inF1)
-            1188:          48 ExtInst 1(GLSL.std.450) 37(FMin) 1186 1187
+            1186:          60 Load 63(inF0)
+            1187:          60 Load 64(inF1)
+            1188:          60 ExtInst 1(GLSL.std.450) 37(FMin) 1186 1187
                               Store 1185(r031) 1188
-            1190:          48 Load 51(inF0)
-            1191:          48 Load 52(inF1)
-            1192:          48 ExtInst 1(GLSL.std.450) 26(Pow) 1190 1191
+            1190:          60 Load 63(inF0)
+            1191:          60 Load 64(inF1)
+            1192:          60 ExtInst 1(GLSL.std.450) 26(Pow) 1190 1191
                               Store 1189(r032) 1192
-            1194:          48 Load 51(inF0)
-            1195:          48 ExtInst 1(GLSL.std.450) 11(Radians) 1194
+            1194:          60 Load 63(inF0)
+            1195:          60 ExtInst 1(GLSL.std.450) 11(Radians) 1194
                               Store 1193(r033) 1195
-            1197:          48 Load 51(inF0)
-            1198:          48 ExtInst 1(GLSL.std.450) 2(RoundEven) 1197
+            1197:          60 Load 63(inF0)
+            1198:          60 ExtInst 1(GLSL.std.450) 2(RoundEven) 1197
                               Store 1196(r034) 1198
-            1200:          48 Load 51(inF0)
-            1201:          48 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1200
+            1200:          60 Load 63(inF0)
+            1201:          60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1200
                               Store 1199(r035) 1201
-            1203:          48 Load 51(inF0)
-            1204:   24(fvec2) CompositeConstruct 165 165
-            1205:   24(fvec2) CompositeConstruct 274 274
-            1206:          48 ExtInst 1(GLSL.std.450) 43(FClamp) 1203 1204 1205
+            1203:          60 Load 63(inF0)
+            1204:   24(fvec2) CompositeConstruct 175 175
+            1205:   24(fvec2) CompositeConstruct 284 284
+            1206:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 1203 1204 1205
                               Store 1202(r036) 1206
-            1208:          48 Load 51(inF0)
-            1209:          48 ExtInst 1(GLSL.std.450) 6(FSign) 1208
+            1208:          60 Load 63(inF0)
+            1209:          60 ExtInst 1(GLSL.std.450) 6(FSign) 1208
                               Store 1207(r037) 1209
-            1211:          48 Load 51(inF0)
-            1212:          48 ExtInst 1(GLSL.std.450) 13(Sin) 1211
+            1211:          60 Load 63(inF0)
+            1212:          60 ExtInst 1(GLSL.std.450) 13(Sin) 1211
                               Store 1210(r038) 1212
-            1213:          48 Load 51(inF0)
-            1214:          48 ExtInst 1(GLSL.std.450) 13(Sin) 1213
-                              Store 52(inF1) 1214
-            1215:          48 Load 51(inF0)
-            1216:          48 ExtInst 1(GLSL.std.450) 14(Cos) 1215
-                              Store 53(inF2) 1216
-            1218:          48 Load 51(inF0)
-            1219:          48 ExtInst 1(GLSL.std.450) 19(Sinh) 1218
+            1213:          60 Load 63(inF0)
+            1214:          60 ExtInst 1(GLSL.std.450) 13(Sin) 1213
+                              Store 64(inF1) 1214
+            1215:          60 Load 63(inF0)
+            1216:          60 ExtInst 1(GLSL.std.450) 14(Cos) 1215
+                              Store 65(inF2) 1216
+            1218:          60 Load 63(inF0)
+            1219:          60 ExtInst 1(GLSL.std.450) 19(Sinh) 1218
                               Store 1217(r039) 1219
-            1221:          48 Load 51(inF0)
-            1222:          48 Load 52(inF1)
-            1223:          48 Load 53(inF2)
-            1224:          48 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1221 1222 1223
+            1221:          60 Load 63(inF0)
+            1222:          60 Load 64(inF1)
+            1223:          60 Load 65(inF2)
+            1224:          60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1221 1222 1223
                               Store 1220(r049) 1224
-            1226:          48 Load 51(inF0)
-            1227:          48 ExtInst 1(GLSL.std.450) 31(Sqrt) 1226
+            1226:          60 Load 63(inF0)
+            1227:          60 ExtInst 1(GLSL.std.450) 31(Sqrt) 1226
                               Store 1225(r041) 1227
-            1229:          48 Load 51(inF0)
-            1230:          48 Load 52(inF1)
-            1231:          48 ExtInst 1(GLSL.std.450) 48(Step) 1229 1230
+            1229:          60 Load 63(inF0)
+            1230:          60 Load 64(inF1)
+            1231:          60 ExtInst 1(GLSL.std.450) 48(Step) 1229 1230
                               Store 1228(r042) 1231
-            1233:          48 Load 51(inF0)
-            1234:          48 ExtInst 1(GLSL.std.450) 15(Tan) 1233
+            1233:          60 Load 63(inF0)
+            1234:          60 ExtInst 1(GLSL.std.450) 15(Tan) 1233
                               Store 1232(r043) 1234
-            1236:          48 Load 51(inF0)
-            1237:          48 ExtInst 1(GLSL.std.450) 21(Tanh) 1236
+            1236:          60 Load 63(inF0)
+            1237:          60 ExtInst 1(GLSL.std.450) 21(Tanh) 1236
                               Store 1235(r044) 1237
-            1238:          48 Load 51(inF0)
-            1239:          48 Transpose 1238
-            1241:          48 Load 51(inF0)
-            1242:          48 ExtInst 1(GLSL.std.450) 3(Trunc) 1241
+            1238:          60 Load 63(inF0)
+            1239:          60 Transpose 1238
+            1241:          60 Load 63(inF0)
+            1242:          60 ExtInst 1(GLSL.std.450) 3(Trunc) 1241
                               Store 1240(r046) 1242
                               ReturnValue 1244
                               FunctionEnd
-62(PixelShaderFunction3x3(mf33;mf33;mf33;):          56 Function None 58
-        59(inF0):     57(ptr) FunctionParameter
-        60(inF1):     57(ptr) FunctionParameter
-        61(inF2):     57(ptr) FunctionParameter
-              63:             Label
-      1247(r000):    122(ptr) Variable Function
-      1250(r001):     57(ptr) Variable Function
-      1255(r003):    122(ptr) Variable Function
-      1258(r004):     57(ptr) Variable Function
-      1261(r005):     57(ptr) Variable Function
-      1264(r006):     57(ptr) Variable Function
-      1268(r007):     57(ptr) Variable Function
-      1279(r008):     57(ptr) Variable Function
-      1284(r009):     57(ptr) Variable Function
-      1287(r010):     57(ptr) Variable Function
-      1290(r011):     57(ptr) Variable Function
-      1293(r012):     57(ptr) Variable Function
-      1296(r013):     57(ptr) Variable Function
-      1299(r014):     57(ptr) Variable Function
-      1302(r015):     57(ptr) Variable Function
-      1305(r016):     57(ptr) Variable Function
-      1308(r017):     57(ptr) Variable Function
+74(PixelShaderFunction3x3(mf33;mf33;mf33;):          68 Function None 70
+        71(inF0):     69(ptr) FunctionParameter
+        72(inF1):     69(ptr) FunctionParameter
+        73(inF2):     69(ptr) FunctionParameter
+              75:             Label
+      1247(r000):    132(ptr) Variable Function
+      1250(r001):     69(ptr) Variable Function
+      1255(r003):    132(ptr) Variable Function
+      1258(r004):     69(ptr) Variable Function
+      1261(r005):     69(ptr) Variable Function
+      1264(r006):     69(ptr) Variable Function
+      1268(r007):     69(ptr) Variable Function
+      1279(r008):     69(ptr) Variable Function
+      1284(r009):     69(ptr) Variable Function
+      1287(r010):     69(ptr) Variable Function
+      1290(r011):     69(ptr) Variable Function
+      1293(r012):     69(ptr) Variable Function
+      1296(r013):     69(ptr) Variable Function
+      1299(r014):     69(ptr) Variable Function
+      1302(r015):     69(ptr) Variable Function
+      1305(r016):     69(ptr) Variable Function
+      1308(r017):     69(ptr) Variable Function
       1311(r018):      7(ptr) Variable Function
-      1314(r019):     57(ptr) Variable Function
-      1317(R020):     57(ptr) Variable Function
-      1320(r021):     57(ptr) Variable Function
-      1323(r022):     57(ptr) Variable Function
-      1336(r023):     57(ptr) Variable Function
-      1339(r024):     57(ptr) Variable Function
-      1345(r025):     57(ptr) Variable Function
-      1348(r026):     57(ptr) Variable Function
-     1352(r026a):     57(ptr) Variable Function
-      1357(r027):     57(ptr) Variable Function
-      1360(r028):     57(ptr) Variable Function
-      1364(r029):     57(ptr) Variable Function
-      1367(r030):     57(ptr) Variable Function
-      1371(r031):     57(ptr) Variable Function
-      1375(r032):     57(ptr) Variable Function
-      1379(r033):     57(ptr) Variable Function
-      1382(r034):     57(ptr) Variable Function
-      1385(r035):     57(ptr) Variable Function
-      1388(r036):     57(ptr) Variable Function
-      1393(r037):     57(ptr) Variable Function
-      1396(r038):     57(ptr) Variable Function
-      1403(r039):     57(ptr) Variable Function
-      1406(r049):     57(ptr) Variable Function
-      1411(r041):     57(ptr) Variable Function
-      1414(r042):     57(ptr) Variable Function
-      1418(r043):     57(ptr) Variable Function
-      1421(r044):     57(ptr) Variable Function
-      1426(r046):     57(ptr) Variable Function
-            1248:          56 Load 59(inF0)
-            1249:   121(bool) All 1248
+      1314(r019):     69(ptr) Variable Function
+      1317(R020):     69(ptr) Variable Function
+      1320(r021):     69(ptr) Variable Function
+      1323(r022):     69(ptr) Variable Function
+      1336(r023):     69(ptr) Variable Function
+      1339(r024):     69(ptr) Variable Function
+      1345(r025):     69(ptr) Variable Function
+      1348(r026):     69(ptr) Variable Function
+     1352(r026a):     69(ptr) Variable Function
+      1357(r027):     69(ptr) Variable Function
+      1360(r028):     69(ptr) Variable Function
+      1364(r029):     69(ptr) Variable Function
+      1367(r030):     69(ptr) Variable Function
+      1371(r031):     69(ptr) Variable Function
+      1375(r032):     69(ptr) Variable Function
+      1379(r033):     69(ptr) Variable Function
+      1382(r034):     69(ptr) Variable Function
+      1385(r035):     69(ptr) Variable Function
+      1388(r036):     69(ptr) Variable Function
+      1393(r037):     69(ptr) Variable Function
+      1396(r038):     69(ptr) Variable Function
+      1403(r039):     69(ptr) Variable Function
+      1406(r049):     69(ptr) Variable Function
+      1411(r041):     69(ptr) Variable Function
+      1414(r042):     69(ptr) Variable Function
+      1418(r043):     69(ptr) Variable Function
+      1421(r044):     69(ptr) Variable Function
+      1426(r046):     69(ptr) Variable Function
+            1248:          68 Load 71(inF0)
+            1249:   131(bool) All 1248
                               Store 1247(r000) 1249
-            1251:          56 Load 59(inF0)
-            1252:          56 ExtInst 1(GLSL.std.450) 4(FAbs) 1251
+            1251:          68 Load 71(inF0)
+            1252:          68 ExtInst 1(GLSL.std.450) 4(FAbs) 1251
                               Store 1250(r001) 1252
-            1253:          56 Load 59(inF0)
-            1254:          56 ExtInst 1(GLSL.std.450) 17(Acos) 1253
-            1256:          56 Load 59(inF0)
-            1257:   121(bool) Any 1256
+            1253:          68 Load 71(inF0)
+            1254:          68 ExtInst 1(GLSL.std.450) 17(Acos) 1253
+            1256:          68 Load 71(inF0)
+            1257:   131(bool) Any 1256
                               Store 1255(r003) 1257
-            1259:          56 Load 59(inF0)
-            1260:          56 ExtInst 1(GLSL.std.450) 16(Asin) 1259
+            1259:          68 Load 71(inF0)
+            1260:          68 ExtInst 1(GLSL.std.450) 16(Asin) 1259
                               Store 1258(r004) 1260
-            1262:          56 Load 59(inF0)
-            1263:          56 ExtInst 1(GLSL.std.450) 18(Atan) 1262
+            1262:          68 Load 71(inF0)
+            1263:          68 ExtInst 1(GLSL.std.450) 18(Atan) 1262
                               Store 1261(r005) 1263
-            1265:          56 Load 59(inF0)
-            1266:          56 Load 60(inF1)
-            1267:          56 ExtInst 1(GLSL.std.450) 25(Atan2) 1265 1266
+            1265:          68 Load 71(inF0)
+            1266:          68 Load 72(inF1)
+            1267:          68 ExtInst 1(GLSL.std.450) 25(Atan2) 1265 1266
                               Store 1264(r006) 1267
-            1269:          56 Load 59(inF0)
-            1270:          56 ExtInst 1(GLSL.std.450) 9(Ceil) 1269
+            1269:          68 Load 71(inF0)
+            1270:          68 ExtInst 1(GLSL.std.450) 9(Ceil) 1269
                               Store 1268(r007) 1270
-            1271:          56 Load 59(inF0)
+            1271:          68 Load 71(inF0)
             1274:        1273 FOrdLessThan 1271 1272
-            1275:   121(bool) Any 1274
+            1275:   131(bool) Any 1274
                               SelectionMerge 1277 None
                               BranchConditional 1275 1276 1277
             1276:               Label
                                 Kill
             1277:             Label
-            1280:          56 Load 59(inF0)
-            1281:          56 Load 60(inF1)
-            1282:          56 Load 61(inF2)
-            1283:          56 ExtInst 1(GLSL.std.450) 43(FClamp) 1280 1281 1282
+            1280:          68 Load 71(inF0)
+            1281:          68 Load 72(inF1)
+            1282:          68 Load 73(inF2)
+            1283:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 1280 1281 1282
                               Store 1279(r008) 1283
-            1285:          56 Load 59(inF0)
-            1286:          56 ExtInst 1(GLSL.std.450) 14(Cos) 1285
+            1285:          68 Load 71(inF0)
+            1286:          68 ExtInst 1(GLSL.std.450) 14(Cos) 1285
                               Store 1284(r009) 1286
-            1288:          56 Load 59(inF0)
-            1289:          56 ExtInst 1(GLSL.std.450) 20(Cosh) 1288
+            1288:          68 Load 71(inF0)
+            1289:          68 ExtInst 1(GLSL.std.450) 20(Cosh) 1288
                               Store 1287(r010) 1289
-            1291:          56 Load 59(inF0)
-            1292:          56 DPdx 1291
+            1291:          68 Load 71(inF0)
+            1292:          68 DPdx 1291
                               Store 1290(r011) 1292
-            1294:          56 Load 59(inF0)
-            1295:          56 DPdxCoarse 1294
+            1294:          68 Load 71(inF0)
+            1295:          68 DPdxCoarse 1294
                               Store 1293(r012) 1295
-            1297:          56 Load 59(inF0)
-            1298:          56 DPdxFine 1297
+            1297:          68 Load 71(inF0)
+            1298:          68 DPdxFine 1297
                               Store 1296(r013) 1298
-            1300:          56 Load 59(inF0)
-            1301:          56 DPdy 1300
+            1300:          68 Load 71(inF0)
+            1301:          68 DPdy 1300
                               Store 1299(r014) 1301
-            1303:          56 Load 59(inF0)
-            1304:          56 DPdyCoarse 1303
+            1303:          68 Load 71(inF0)
+            1304:          68 DPdyCoarse 1303
                               Store 1302(r015) 1304
-            1306:          56 Load 59(inF0)
-            1307:          56 DPdyFine 1306
+            1306:          68 Load 71(inF0)
+            1307:          68 DPdyFine 1306
                               Store 1305(r016) 1307
-            1309:          56 Load 59(inF0)
-            1310:          56 ExtInst 1(GLSL.std.450) 12(Degrees) 1309
+            1309:          68 Load 71(inF0)
+            1310:          68 ExtInst 1(GLSL.std.450) 12(Degrees) 1309
                               Store 1308(r017) 1310
-            1312:          56 Load 59(inF0)
+            1312:          68 Load 71(inF0)
             1313:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1312
                               Store 1311(r018) 1313
-            1315:          56 Load 59(inF0)
-            1316:          56 ExtInst 1(GLSL.std.450) 27(Exp) 1315
+            1315:          68 Load 71(inF0)
+            1316:          68 ExtInst 1(GLSL.std.450) 27(Exp) 1315
                               Store 1314(r019) 1316
-            1318:          56 Load 59(inF0)
-            1319:          56 ExtInst 1(GLSL.std.450) 29(Exp2) 1318
+            1318:          68 Load 71(inF0)
+            1319:          68 ExtInst 1(GLSL.std.450) 29(Exp2) 1318
                               Store 1317(R020) 1319
-            1321:          56 Load 59(inF0)
-            1322:          56 ExtInst 1(GLSL.std.450) 8(Floor) 1321
+            1321:          68 Load 71(inF0)
+            1322:          68 ExtInst 1(GLSL.std.450) 8(Floor) 1321
                               Store 1320(r021) 1322
-            1324:          56 Load 59(inF0)
-            1325:          56 Load 60(inF1)
+            1324:          68 Load 71(inF0)
+            1325:          68 Load 72(inF1)
             1326:   36(fvec3) CompositeExtract 1324 0
             1327:   36(fvec3) CompositeExtract 1325 0
             1328:   36(fvec3) FMod 1326 1327
@@ -7777,521 +7819,521 @@ gl_FragCoord origin is upper left
             1332:   36(fvec3) CompositeExtract 1324 2
             1333:   36(fvec3) CompositeExtract 1325 2
             1334:   36(fvec3) FMod 1332 1333
-            1335:          56 CompositeConstruct 1328 1331 1334
+            1335:          68 CompositeConstruct 1328 1331 1334
                               Store 1323(r022) 1335
-            1337:          56 Load 59(inF0)
-            1338:          56 ExtInst 1(GLSL.std.450) 10(Fract) 1337
+            1337:          68 Load 71(inF0)
+            1338:          68 ExtInst 1(GLSL.std.450) 10(Fract) 1337
                               Store 1336(r023) 1338
-            1340:          56 Load 59(inF0)
+            1340:          68 Load 71(inF0)
             1342:1341(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1340
-            1343:  578(ivec3) CompositeExtract 1342 1
-                              Store 60(inF1) 1343
-            1344:          56 CompositeExtract 1342 0
+            1343:  588(ivec3) CompositeExtract 1342 1
+                              Store 72(inF1) 1343
+            1344:          68 CompositeExtract 1342 0
                               Store 1339(r024) 1344
-            1346:          56 Load 59(inF0)
-            1347:          56 Fwidth 1346
+            1346:          68 Load 71(inF0)
+            1347:          68 Fwidth 1346
                               Store 1345(r025) 1347
-            1349:          56 Load 59(inF0)
-            1350:          56 Load 60(inF1)
-            1351:          56 ExtInst 1(GLSL.std.450) 53(Ldexp) 1349 1350
+            1349:          68 Load 71(inF0)
+            1350:          68 Load 72(inF1)
+            1351:          68 ExtInst 1(GLSL.std.450) 53(Ldexp) 1349 1350
                               Store 1348(r026) 1351
-            1353:          56 Load 59(inF0)
-            1354:          56 Load 60(inF1)
-            1355:          56 Load 61(inF2)
-            1356:          56 ExtInst 1(GLSL.std.450) 46(FMix) 1353 1354 1355
+            1353:          68 Load 71(inF0)
+            1354:          68 Load 72(inF1)
+            1355:          68 Load 73(inF2)
+            1356:          68 ExtInst 1(GLSL.std.450) 46(FMix) 1353 1354 1355
                               Store 1352(r026a) 1356
-            1358:          56 Load 59(inF0)
-            1359:          56 ExtInst 1(GLSL.std.450) 28(Log) 1358
+            1358:          68 Load 71(inF0)
+            1359:          68 ExtInst 1(GLSL.std.450) 28(Log) 1358
                               Store 1357(r027) 1359
-            1361:          56 Load 59(inF0)
-            1362:          56 ExtInst 1(GLSL.std.450) 30(Log2) 1361
-            1363:          56 MatrixTimesScalar 1362 253
+            1361:          68 Load 71(inF0)
+            1362:          68 ExtInst 1(GLSL.std.450) 30(Log2) 1361
+            1363:          68 MatrixTimesScalar 1362 263
                               Store 1360(r028) 1363
-            1365:          56 Load 59(inF0)
-            1366:          56 ExtInst 1(GLSL.std.450) 30(Log2) 1365
+            1365:          68 Load 71(inF0)
+            1366:          68 ExtInst 1(GLSL.std.450) 30(Log2) 1365
                               Store 1364(r029) 1366
-            1368:          56 Load 59(inF0)
-            1369:          56 Load 60(inF1)
-            1370:          56 ExtInst 1(GLSL.std.450) 40(FMax) 1368 1369
+            1368:          68 Load 71(inF0)
+            1369:          68 Load 72(inF1)
+            1370:          68 ExtInst 1(GLSL.std.450) 40(FMax) 1368 1369
                               Store 1367(r030) 1370
-            1372:          56 Load 59(inF0)
-            1373:          56 Load 60(inF1)
-            1374:          56 ExtInst 1(GLSL.std.450) 37(FMin) 1372 1373
+            1372:          68 Load 71(inF0)
+            1373:          68 Load 72(inF1)
+            1374:          68 ExtInst 1(GLSL.std.450) 37(FMin) 1372 1373
                               Store 1371(r031) 1374
-            1376:          56 Load 59(inF0)
-            1377:          56 Load 60(inF1)
-            1378:          56 ExtInst 1(GLSL.std.450) 26(Pow) 1376 1377
+            1376:          68 Load 71(inF0)
+            1377:          68 Load 72(inF1)
+            1378:          68 ExtInst 1(GLSL.std.450) 26(Pow) 1376 1377
                               Store 1375(r032) 1378
-            1380:          56 Load 59(inF0)
-            1381:          56 ExtInst 1(GLSL.std.450) 11(Radians) 1380
+            1380:          68 Load 71(inF0)
+            1381:          68 ExtInst 1(GLSL.std.450) 11(Radians) 1380
                               Store 1379(r033) 1381
-            1383:          56 Load 59(inF0)
-            1384:          56 ExtInst 1(GLSL.std.450) 2(RoundEven) 1383
+            1383:          68 Load 71(inF0)
+            1384:          68 ExtInst 1(GLSL.std.450) 2(RoundEven) 1383
                               Store 1382(r034) 1384
-            1386:          56 Load 59(inF0)
-            1387:          56 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1386
+            1386:          68 Load 71(inF0)
+            1387:          68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1386
                               Store 1385(r035) 1387
-            1389:          56 Load 59(inF0)
-            1390:   36(fvec3) CompositeConstruct 165 165 165
-            1391:   36(fvec3) CompositeConstruct 274 274 274
-            1392:          56 ExtInst 1(GLSL.std.450) 43(FClamp) 1389 1390 1391
+            1389:          68 Load 71(inF0)
+            1390:   36(fvec3) CompositeConstruct 175 175 175
+            1391:   36(fvec3) CompositeConstruct 284 284 284
+            1392:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 1389 1390 1391
                               Store 1388(r036) 1392
-            1394:          56 Load 59(inF0)
-            1395:          56 ExtInst 1(GLSL.std.450) 6(FSign) 1394
+            1394:          68 Load 71(inF0)
+            1395:          68 ExtInst 1(GLSL.std.450) 6(FSign) 1394
                               Store 1393(r037) 1395
-            1397:          56 Load 59(inF0)
-            1398:          56 ExtInst 1(GLSL.std.450) 13(Sin) 1397
+            1397:          68 Load 71(inF0)
+            1398:          68 ExtInst 1(GLSL.std.450) 13(Sin) 1397
                               Store 1396(r038) 1398
-            1399:          56 Load 59(inF0)
-            1400:          56 ExtInst 1(GLSL.std.450) 13(Sin) 1399
-                              Store 60(inF1) 1400
-            1401:          56 Load 59(inF0)
-            1402:          56 ExtInst 1(GLSL.std.450) 14(Cos) 1401
-                              Store 61(inF2) 1402
-            1404:          56 Load 59(inF0)
-            1405:          56 ExtInst 1(GLSL.std.450) 19(Sinh) 1404
+            1399:          68 Load 71(inF0)
+            1400:          68 ExtInst 1(GLSL.std.450) 13(Sin) 1399
+                              Store 72(inF1) 1400
+            1401:          68 Load 71(inF0)
+            1402:          68 ExtInst 1(GLSL.std.450) 14(Cos) 1401
+                              Store 73(inF2) 1402
+            1404:          68 Load 71(inF0)
+            1405:          68 ExtInst 1(GLSL.std.450) 19(Sinh) 1404
                               Store 1403(r039) 1405
-            1407:          56 Load 59(inF0)
-            1408:          56 Load 60(inF1)
-            1409:          56 Load 61(inF2)
-            1410:          56 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1407 1408 1409
+            1407:          68 Load 71(inF0)
+            1408:          68 Load 72(inF1)
+            1409:          68 Load 73(inF2)
+            1410:          68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1407 1408 1409
                               Store 1406(r049) 1410
-            1412:          56 Load 59(inF0)
-            1413:          56 ExtInst 1(GLSL.std.450) 31(Sqrt) 1412
+            1412:          68 Load 71(inF0)
+            1413:          68 ExtInst 1(GLSL.std.450) 31(Sqrt) 1412
                               Store 1411(r041) 1413
-            1415:          56 Load 59(inF0)
-            1416:          56 Load 60(inF1)
-            1417:          56 ExtInst 1(GLSL.std.450) 48(Step) 1415 1416
+            1415:          68 Load 71(inF0)
+            1416:          68 Load 72(inF1)
+            1417:          68 ExtInst 1(GLSL.std.450) 48(Step) 1415 1416
                               Store 1414(r042) 1417
-            1419:          56 Load 59(inF0)
-            1420:          56 ExtInst 1(GLSL.std.450) 15(Tan) 1419
+            1419:          68 Load 71(inF0)
+            1420:          68 ExtInst 1(GLSL.std.450) 15(Tan) 1419
                               Store 1418(r043) 1420
-            1422:          56 Load 59(inF0)
-            1423:          56 ExtInst 1(GLSL.std.450) 21(Tanh) 1422
+            1422:          68 Load 71(inF0)
+            1423:          68 ExtInst 1(GLSL.std.450) 21(Tanh) 1422
                               Store 1421(r044) 1423
-            1424:          56 Load 59(inF0)
-            1425:          56 Transpose 1424
-            1427:          56 Load 59(inF0)
-            1428:          56 ExtInst 1(GLSL.std.450) 3(Trunc) 1427
+            1424:          68 Load 71(inF0)
+            1425:          68 Transpose 1424
+            1427:          68 Load 71(inF0)
+            1428:          68 ExtInst 1(GLSL.std.450) 3(Trunc) 1427
                               Store 1426(r046) 1428
                               ReturnValue 1430
                               FunctionEnd
-71(PixelShaderFunction4x4(mf44;mf44;mf44;):          65 Function None 67
-        68(inF0):     66(ptr) FunctionParameter
-        69(inF1):     66(ptr) FunctionParameter
-        70(inF2):     66(ptr) FunctionParameter
-              72:             Label
-      1433(r000):    122(ptr) Variable Function
-      1436(r001):     66(ptr) Variable Function
-      1441(r003):    122(ptr) Variable Function
-      1444(r004):     66(ptr) Variable Function
-      1447(r005):     66(ptr) Variable Function
-      1450(r006):     66(ptr) Variable Function
-      1454(r007):     66(ptr) Variable Function
-      1465(r008):     66(ptr) Variable Function
-      1470(r009):     66(ptr) Variable Function
-      1473(r010):     66(ptr) Variable Function
-      1476(r011):     66(ptr) Variable Function
-      1479(r012):     66(ptr) Variable Function
-      1482(r013):     66(ptr) Variable Function
-      1485(r014):     66(ptr) Variable Function
-      1488(r015):     66(ptr) Variable Function
-      1491(r016):     66(ptr) Variable Function
-      1494(r017):     66(ptr) Variable Function
+82(PixelShaderFunction4x4(mf44;mf44;mf44;):          76 Function None 78
+        79(inF0):     77(ptr) FunctionParameter
+        80(inF1):     77(ptr) FunctionParameter
+        81(inF2):     77(ptr) FunctionParameter
+              83:             Label
+      1433(r000):    132(ptr) Variable Function
+      1436(r001):     77(ptr) Variable Function
+      1441(r003):    132(ptr) Variable Function
+      1444(r004):     77(ptr) Variable Function
+      1447(r005):     77(ptr) Variable Function
+      1450(r006):     77(ptr) Variable Function
+      1454(r007):     77(ptr) Variable Function
+      1465(r008):     77(ptr) Variable Function
+      1470(r009):     77(ptr) Variable Function
+      1473(r010):     77(ptr) Variable Function
+      1476(r011):     77(ptr) Variable Function
+      1479(r012):     77(ptr) Variable Function
+      1482(r013):     77(ptr) Variable Function
+      1485(r014):     77(ptr) Variable Function
+      1488(r015):     77(ptr) Variable Function
+      1491(r016):     77(ptr) Variable Function
+      1494(r017):     77(ptr) Variable Function
       1497(r018):      7(ptr) Variable Function
-      1500(r019):     66(ptr) Variable Function
-      1503(R020):     66(ptr) Variable Function
-      1506(r021):     66(ptr) Variable Function
-      1509(r022):     66(ptr) Variable Function
-      1525(r023):     66(ptr) Variable Function
-      1528(r024):     66(ptr) Variable Function
-      1534(r025):     66(ptr) Variable Function
-      1537(r026):     66(ptr) Variable Function
-     1541(r026a):     66(ptr) Variable Function
-      1546(r027):     66(ptr) Variable Function
-      1549(r028):     66(ptr) Variable Function
-      1553(r029):     66(ptr) Variable Function
-      1556(r030):     66(ptr) Variable Function
-      1560(r031):     66(ptr) Variable Function
-      1564(r032):     66(ptr) Variable Function
-      1568(r033):     66(ptr) Variable Function
-      1571(r034):     66(ptr) Variable Function
-      1574(r035):     66(ptr) Variable Function
-      1577(r036):     66(ptr) Variable Function
-      1582(r037):     66(ptr) Variable Function
-      1585(r038):     66(ptr) Variable Function
-      1592(r039):     66(ptr) Variable Function
-      1595(r049):     66(ptr) Variable Function
-      1600(r041):     66(ptr) Variable Function
-      1603(r042):     66(ptr) Variable Function
-      1607(r043):     66(ptr) Variable Function
-      1610(r044):     66(ptr) Variable Function
-      1615(r046):     66(ptr) Variable Function
-            1434:          65 Load 68(inF0)
-            1435:   121(bool) All 1434
+      1500(r019):     77(ptr) Variable Function
+      1503(R020):     77(ptr) Variable Function
+      1506(r021):     77(ptr) Variable Function
+      1509(r022):     77(ptr) Variable Function
+      1525(r023):     77(ptr) Variable Function
+      1528(r024):     77(ptr) Variable Function
+      1534(r025):     77(ptr) Variable Function
+      1537(r026):     77(ptr) Variable Function
+     1541(r026a):     77(ptr) Variable Function
+      1546(r027):     77(ptr) Variable Function
+      1549(r028):     77(ptr) Variable Function
+      1553(r029):     77(ptr) Variable Function
+      1556(r030):     77(ptr) Variable Function
+      1560(r031):     77(ptr) Variable Function
+      1564(r032):     77(ptr) Variable Function
+      1568(r033):     77(ptr) Variable Function
+      1571(r034):     77(ptr) Variable Function
+      1574(r035):     77(ptr) Variable Function
+      1577(r036):     77(ptr) Variable Function
+      1582(r037):     77(ptr) Variable Function
+      1585(r038):     77(ptr) Variable Function
+      1592(r039):     77(ptr) Variable Function
+      1595(r049):     77(ptr) Variable Function
+      1600(r041):     77(ptr) Variable Function
+      1603(r042):     77(ptr) Variable Function
+      1607(r043):     77(ptr) Variable Function
+      1610(r044):     77(ptr) Variable Function
+      1615(r046):     77(ptr) Variable Function
+            1434:          76 Load 79(inF0)
+            1435:   131(bool) All 1434
                               Store 1433(r000) 1435
-            1437:          65 Load 68(inF0)
-            1438:          65 ExtInst 1(GLSL.std.450) 4(FAbs) 1437
+            1437:          76 Load 79(inF0)
+            1438:          76 ExtInst 1(GLSL.std.450) 4(FAbs) 1437
                               Store 1436(r001) 1438
-            1439:          65 Load 68(inF0)
-            1440:          65 ExtInst 1(GLSL.std.450) 17(Acos) 1439
-            1442:          65 Load 68(inF0)
-            1443:   121(bool) Any 1442
+            1439:          76 Load 79(inF0)
+            1440:          76 ExtInst 1(GLSL.std.450) 17(Acos) 1439
+            1442:          76 Load 79(inF0)
+            1443:   131(bool) Any 1442
                               Store 1441(r003) 1443
-            1445:          65 Load 68(inF0)
-            1446:          65 ExtInst 1(GLSL.std.450) 16(Asin) 1445
+            1445:          76 Load 79(inF0)
+            1446:          76 ExtInst 1(GLSL.std.450) 16(Asin) 1445
                               Store 1444(r004) 1446
-            1448:          65 Load 68(inF0)
-            1449:          65 ExtInst 1(GLSL.std.450) 18(Atan) 1448
+            1448:          76 Load 79(inF0)
+            1449:          76 ExtInst 1(GLSL.std.450) 18(Atan) 1448
                               Store 1447(r005) 1449
-            1451:          65 Load 68(inF0)
-            1452:          65 Load 69(inF1)
-            1453:          65 ExtInst 1(GLSL.std.450) 25(Atan2) 1451 1452
+            1451:          76 Load 79(inF0)
+            1452:          76 Load 80(inF1)
+            1453:          76 ExtInst 1(GLSL.std.450) 25(Atan2) 1451 1452
                               Store 1450(r006) 1453
-            1455:          65 Load 68(inF0)
-            1456:          65 ExtInst 1(GLSL.std.450) 9(Ceil) 1455
+            1455:          76 Load 79(inF0)
+            1456:          76 ExtInst 1(GLSL.std.450) 9(Ceil) 1455
                               Store 1454(r007) 1456
-            1457:          65 Load 68(inF0)
+            1457:          76 Load 79(inF0)
             1460:        1459 FOrdLessThan 1457 1458
-            1461:   121(bool) Any 1460
+            1461:   131(bool) Any 1460
                               SelectionMerge 1463 None
                               BranchConditional 1461 1462 1463
             1462:               Label
                                 Kill
             1463:             Label
-            1466:          65 Load 68(inF0)
-            1467:          65 Load 69(inF1)
-            1468:          65 Load 70(inF2)
-            1469:          65 ExtInst 1(GLSL.std.450) 43(FClamp) 1466 1467 1468
+            1466:          76 Load 79(inF0)
+            1467:          76 Load 80(inF1)
+            1468:          76 Load 81(inF2)
+            1469:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1466 1467 1468
                               Store 1465(r008) 1469
-            1471:          65 Load 68(inF0)
-            1472:          65 ExtInst 1(GLSL.std.450) 14(Cos) 1471
+            1471:          76 Load 79(inF0)
+            1472:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1471
                               Store 1470(r009) 1472
-            1474:          65 Load 68(inF0)
-            1475:          65 ExtInst 1(GLSL.std.450) 20(Cosh) 1474
+            1474:          76 Load 79(inF0)
+            1475:          76 ExtInst 1(GLSL.std.450) 20(Cosh) 1474
                               Store 1473(r010) 1475
-            1477:          65 Load 68(inF0)
-            1478:          65 DPdx 1477
+            1477:          76 Load 79(inF0)
+            1478:          76 DPdx 1477
                               Store 1476(r011) 1478
-            1480:          65 Load 68(inF0)
-            1481:          65 DPdxCoarse 1480
+            1480:          76 Load 79(inF0)
+            1481:          76 DPdxCoarse 1480
                               Store 1479(r012) 1481
-            1483:          65 Load 68(inF0)
-            1484:          65 DPdxFine 1483
+            1483:          76 Load 79(inF0)
+            1484:          76 DPdxFine 1483
                               Store 1482(r013) 1484
-            1486:          65 Load 68(inF0)
-            1487:          65 DPdy 1486
+            1486:          76 Load 79(inF0)
+            1487:          76 DPdy 1486
                               Store 1485(r014) 1487
-            1489:          65 Load 68(inF0)
-            1490:          65 DPdyCoarse 1489
+            1489:          76 Load 79(inF0)
+            1490:          76 DPdyCoarse 1489
                               Store 1488(r015) 1490
-            1492:          65 Load 68(inF0)
-            1493:          65 DPdyFine 1492
+            1492:          76 Load 79(inF0)
+            1493:          76 DPdyFine 1492
                               Store 1491(r016) 1493
-            1495:          65 Load 68(inF0)
-            1496:          65 ExtInst 1(GLSL.std.450) 12(Degrees) 1495
+            1495:          76 Load 79(inF0)
+            1496:          76 ExtInst 1(GLSL.std.450) 12(Degrees) 1495
                               Store 1494(r017) 1496
-            1498:          65 Load 68(inF0)
+            1498:          76 Load 79(inF0)
             1499:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1498
                               Store 1497(r018) 1499
-            1501:          65 Load 68(inF0)
-            1502:          65 ExtInst 1(GLSL.std.450) 27(Exp) 1501
+            1501:          76 Load 79(inF0)
+            1502:          76 ExtInst 1(GLSL.std.450) 27(Exp) 1501
                               Store 1500(r019) 1502
-            1504:          65 Load 68(inF0)
-            1505:          65 ExtInst 1(GLSL.std.450) 29(Exp2) 1504
+            1504:          76 Load 79(inF0)
+            1505:          76 ExtInst 1(GLSL.std.450) 29(Exp2) 1504
                               Store 1503(R020) 1505
-            1507:          65 Load 68(inF0)
-            1508:          65 ExtInst 1(GLSL.std.450) 8(Floor) 1507
+            1507:          76 Load 79(inF0)
+            1508:          76 ExtInst 1(GLSL.std.450) 8(Floor) 1507
                               Store 1506(r021) 1508
-            1510:          65 Load 68(inF0)
-            1511:          65 Load 69(inF1)
-            1512:   64(fvec4) CompositeExtract 1510 0
-            1513:   64(fvec4) CompositeExtract 1511 0
-            1514:   64(fvec4) FMod 1512 1513
-            1515:   64(fvec4) CompositeExtract 1510 1
-            1516:   64(fvec4) CompositeExtract 1511 1
-            1517:   64(fvec4) FMod 1515 1516
-            1518:   64(fvec4) CompositeExtract 1510 2
-            1519:   64(fvec4) CompositeExtract 1511 2
-            1520:   64(fvec4) FMod 1518 1519
-            1521:   64(fvec4) CompositeExtract 1510 3
-            1522:   64(fvec4) CompositeExtract 1511 3
-            1523:   64(fvec4) FMod 1521 1522
-            1524:          65 CompositeConstruct 1514 1517 1520 1523
+            1510:          76 Load 79(inF0)
+            1511:          76 Load 80(inF1)
+            1512:   48(fvec4) CompositeExtract 1510 0
+            1513:   48(fvec4) CompositeExtract 1511 0
+            1514:   48(fvec4) FMod 1512 1513
+            1515:   48(fvec4) CompositeExtract 1510 1
+            1516:   48(fvec4) CompositeExtract 1511 1
+            1517:   48(fvec4) FMod 1515 1516
+            1518:   48(fvec4) CompositeExtract 1510 2
+            1519:   48(fvec4) CompositeExtract 1511 2
+            1520:   48(fvec4) FMod 1518 1519
+            1521:   48(fvec4) CompositeExtract 1510 3
+            1522:   48(fvec4) CompositeExtract 1511 3
+            1523:   48(fvec4) FMod 1521 1522
+            1524:          76 CompositeConstruct 1514 1517 1520 1523
                               Store 1509(r022) 1524
-            1526:          65 Load 68(inF0)
-            1527:          65 ExtInst 1(GLSL.std.450) 10(Fract) 1526
+            1526:          76 Load 79(inF0)
+            1527:          76 ExtInst 1(GLSL.std.450) 10(Fract) 1526
                               Store 1525(r023) 1527
-            1529:          65 Load 68(inF0)
+            1529:          76 Load 79(inF0)
             1531:1530(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1529
-            1532:  825(ivec4) CompositeExtract 1531 1
-                              Store 69(inF1) 1532
-            1533:          65 CompositeExtract 1531 0
+            1532:  833(ivec4) CompositeExtract 1531 1
+                              Store 80(inF1) 1532
+            1533:          76 CompositeExtract 1531 0
                               Store 1528(r024) 1533
-            1535:          65 Load 68(inF0)
-            1536:          65 Fwidth 1535
+            1535:          76 Load 79(inF0)
+            1536:          76 Fwidth 1535
                               Store 1534(r025) 1536
-            1538:          65 Load 68(inF0)
-            1539:          65 Load 69(inF1)
-            1540:          65 ExtInst 1(GLSL.std.450) 53(Ldexp) 1538 1539
+            1538:          76 Load 79(inF0)
+            1539:          76 Load 80(inF1)
+            1540:          76 ExtInst 1(GLSL.std.450) 53(Ldexp) 1538 1539
                               Store 1537(r026) 1540
-            1542:          65 Load 68(inF0)
-            1543:          65 Load 69(inF1)
-            1544:          65 Load 70(inF2)
-            1545:          65 ExtInst 1(GLSL.std.450) 46(FMix) 1542 1543 1544
+            1542:          76 Load 79(inF0)
+            1543:          76 Load 80(inF1)
+            1544:          76 Load 81(inF2)
+            1545:          76 ExtInst 1(GLSL.std.450) 46(FMix) 1542 1543 1544
                               Store 1541(r026a) 1545
-            1547:          65 Load 68(inF0)
-            1548:          65 ExtInst 1(GLSL.std.450) 28(Log) 1547
+            1547:          76 Load 79(inF0)
+            1548:          76 ExtInst 1(GLSL.std.450) 28(Log) 1547
                               Store 1546(r027) 1548
-            1550:          65 Load 68(inF0)
-            1551:          65 ExtInst 1(GLSL.std.450) 30(Log2) 1550
-            1552:          65 MatrixTimesScalar 1551 253
+            1550:          76 Load 79(inF0)
+            1551:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1550
+            1552:          76 MatrixTimesScalar 1551 263
                               Store 1549(r028) 1552
-            1554:          65 Load 68(inF0)
-            1555:          65 ExtInst 1(GLSL.std.450) 30(Log2) 1554
+            1554:          76 Load 79(inF0)
+            1555:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1554
                               Store 1553(r029) 1555
-            1557:          65 Load 68(inF0)
-            1558:          65 Load 69(inF1)
-            1559:          65 ExtInst 1(GLSL.std.450) 40(FMax) 1557 1558
+            1557:          76 Load 79(inF0)
+            1558:          76 Load 80(inF1)
+            1559:          76 ExtInst 1(GLSL.std.450) 40(FMax) 1557 1558
                               Store 1556(r030) 1559
-            1561:          65 Load 68(inF0)
-            1562:          65 Load 69(inF1)
-            1563:          65 ExtInst 1(GLSL.std.450) 37(FMin) 1561 1562
+            1561:          76 Load 79(inF0)
+            1562:          76 Load 80(inF1)
+            1563:          76 ExtInst 1(GLSL.std.450) 37(FMin) 1561 1562
                               Store 1560(r031) 1563
-            1565:          65 Load 68(inF0)
-            1566:          65 Load 69(inF1)
-            1567:          65 ExtInst 1(GLSL.std.450) 26(Pow) 1565 1566
+            1565:          76 Load 79(inF0)
+            1566:          76 Load 80(inF1)
+            1567:          76 ExtInst 1(GLSL.std.450) 26(Pow) 1565 1566
                               Store 1564(r032) 1567
-            1569:          65 Load 68(inF0)
-            1570:          65 ExtInst 1(GLSL.std.450) 11(Radians) 1569
+            1569:          76 Load 79(inF0)
+            1570:          76 ExtInst 1(GLSL.std.450) 11(Radians) 1569
                               Store 1568(r033) 1570
-            1572:          65 Load 68(inF0)
-            1573:          65 ExtInst 1(GLSL.std.450) 2(RoundEven) 1572
+            1572:          76 Load 79(inF0)
+            1573:          76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1572
                               Store 1571(r034) 1573
-            1575:          65 Load 68(inF0)
-            1576:          65 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1575
+            1575:          76 Load 79(inF0)
+            1576:          76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1575
                               Store 1574(r035) 1576
-            1578:          65 Load 68(inF0)
-            1579:   64(fvec4) CompositeConstruct 165 165 165 165
-            1580:   64(fvec4) CompositeConstruct 274 274 274 274
-            1581:          65 ExtInst 1(GLSL.std.450) 43(FClamp) 1578 1579 1580
+            1578:          76 Load 79(inF0)
+            1579:   48(fvec4) CompositeConstruct 175 175 175 175
+            1580:   48(fvec4) CompositeConstruct 284 284 284 284
+            1581:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1578 1579 1580
                               Store 1577(r036) 1581
-            1583:          65 Load 68(inF0)
-            1584:          65 ExtInst 1(GLSL.std.450) 6(FSign) 1583
+            1583:          76 Load 79(inF0)
+            1584:          76 ExtInst 1(GLSL.std.450) 6(FSign) 1583
                               Store 1582(r037) 1584
-            1586:          65 Load 68(inF0)
-            1587:          65 ExtInst 1(GLSL.std.450) 13(Sin) 1586
+            1586:          76 Load 79(inF0)
+            1587:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1586
                               Store 1585(r038) 1587
-            1588:          65 Load 68(inF0)
-            1589:          65 ExtInst 1(GLSL.std.450) 13(Sin) 1588
-                              Store 69(inF1) 1589
-            1590:          65 Load 68(inF0)
-            1591:          65 ExtInst 1(GLSL.std.450) 14(Cos) 1590
-                              Store 70(inF2) 1591
-            1593:          65 Load 68(inF0)
-            1594:          65 ExtInst 1(GLSL.std.450) 19(Sinh) 1593
+            1588:          76 Load 79(inF0)
+            1589:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1588
+                              Store 80(inF1) 1589
+            1590:          76 Load 79(inF0)
+            1591:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1590
+                              Store 81(inF2) 1591
+            1593:          76 Load 79(inF0)
+            1594:          76 ExtInst 1(GLSL.std.450) 19(Sinh) 1593
                               Store 1592(r039) 1594
-            1596:          65 Load 68(inF0)
-            1597:          65 Load 69(inF1)
-            1598:          65 Load 70(inF2)
-            1599:          65 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1596 1597 1598
+            1596:          76 Load 79(inF0)
+            1597:          76 Load 80(inF1)
+            1598:          76 Load 81(inF2)
+            1599:          76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1596 1597 1598
                               Store 1595(r049) 1599
-            1601:          65 Load 68(inF0)
-            1602:          65 ExtInst 1(GLSL.std.450) 31(Sqrt) 1601
+            1601:          76 Load 79(inF0)
+            1602:          76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1601
                               Store 1600(r041) 1602
-            1604:          65 Load 68(inF0)
-            1605:          65 Load 69(inF1)
-            1606:          65 ExtInst 1(GLSL.std.450) 48(Step) 1604 1605
+            1604:          76 Load 79(inF0)
+            1605:          76 Load 80(inF1)
+            1606:          76 ExtInst 1(GLSL.std.450) 48(Step) 1604 1605
                               Store 1603(r042) 1606
-            1608:          65 Load 68(inF0)
-            1609:          65 ExtInst 1(GLSL.std.450) 15(Tan) 1608
+            1608:          76 Load 79(inF0)
+            1609:          76 ExtInst 1(GLSL.std.450) 15(Tan) 1608
                               Store 1607(r043) 1609
-            1611:          65 Load 68(inF0)
-            1612:          65 ExtInst 1(GLSL.std.450) 21(Tanh) 1611
+            1611:          76 Load 79(inF0)
+            1612:          76 ExtInst 1(GLSL.std.450) 21(Tanh) 1611
                               Store 1610(r044) 1612
-            1613:          65 Load 68(inF0)
-            1614:          65 Transpose 1613
-            1616:          65 Load 68(inF0)
-            1617:          65 ExtInst 1(GLSL.std.450) 3(Trunc) 1616
+            1613:          76 Load 79(inF0)
+            1614:          76 Transpose 1613
+            1616:          76 Load 79(inF0)
+            1617:          76 ExtInst 1(GLSL.std.450) 3(Trunc) 1616
                               Store 1615(r046) 1617
                               ReturnValue 1619
                               FunctionEnd
-80(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;):           2 Function None 73
-        74(inF0):      7(ptr) FunctionParameter
-        75(inF1):      7(ptr) FunctionParameter
-       76(inFV0):     25(ptr) FunctionParameter
-       77(inFV1):     25(ptr) FunctionParameter
-       78(inFM0):     49(ptr) FunctionParameter
-       79(inFM1):     49(ptr) FunctionParameter
-              81:             Label
+91(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;):           2 Function None 84
+        85(inF0):      7(ptr) FunctionParameter
+        86(inF1):      7(ptr) FunctionParameter
+       87(inFV0):     25(ptr) FunctionParameter
+       88(inFV1):     25(ptr) FunctionParameter
+       89(inFM0):     61(ptr) FunctionParameter
+       90(inFM1):     61(ptr) FunctionParameter
+              92:             Label
         1622(r0):      7(ptr) Variable Function
         1626(r1):     25(ptr) Variable Function
         1630(r2):     25(ptr) Variable Function
         1634(r3):      7(ptr) Variable Function
         1638(r4):     25(ptr) Variable Function
         1642(r5):     25(ptr) Variable Function
-        1646(r6):     49(ptr) Variable Function
-        1650(r7):     49(ptr) Variable Function
-        1654(r8):     49(ptr) Variable Function
-            1623:    6(float) Load 74(inF0)
-            1624:    6(float) Load 75(inF1)
+        1646(r6):     61(ptr) Variable Function
+        1650(r7):     61(ptr) Variable Function
+        1654(r8):     61(ptr) Variable Function
+            1623:    6(float) Load 86(inF1)
+            1624:    6(float) Load 85(inF0)
             1625:    6(float) FMul 1623 1624
                               Store 1622(r0) 1625
-            1627:   24(fvec2) Load 76(inFV0)
-            1628:    6(float) Load 74(inF0)
-            1629:   24(fvec2) VectorTimesScalar 1627 1628
+            1627:    6(float) Load 85(inF0)
+            1628:   24(fvec2) Load 87(inFV0)
+            1629:   24(fvec2) VectorTimesScalar 1628 1627
                               Store 1626(r1) 1629
-            1631:    6(float) Load 74(inF0)
-            1632:   24(fvec2) Load 76(inFV0)
-            1633:   24(fvec2) VectorTimesScalar 1632 1631
+            1631:   24(fvec2) Load 87(inFV0)
+            1632:    6(float) Load 85(inF0)
+            1633:   24(fvec2) VectorTimesScalar 1631 1632
                               Store 1630(r2) 1633
-            1635:   24(fvec2) Load 76(inFV0)
-            1636:   24(fvec2) Load 77(inFV1)
+            1635:   24(fvec2) Load 87(inFV0)
+            1636:   24(fvec2) Load 88(inFV1)
             1637:    6(float) Dot 1635 1636
                               Store 1634(r3) 1637
-            1639:          48 Load 78(inFM0)
-            1640:   24(fvec2) Load 76(inFV0)
-            1641:   24(fvec2) MatrixTimesVector 1639 1640
+            1639:   24(fvec2) Load 87(inFV0)
+            1640:          60 Load 89(inFM0)
+            1641:   24(fvec2) VectorTimesMatrix 1639 1640
                               Store 1638(r4) 1641
-            1643:   24(fvec2) Load 76(inFV0)
-            1644:          48 Load 78(inFM0)
-            1645:   24(fvec2) VectorTimesMatrix 1643 1644
+            1643:          60 Load 89(inFM0)
+            1644:   24(fvec2) Load 87(inFV0)
+            1645:   24(fvec2) MatrixTimesVector 1643 1644
                               Store 1642(r5) 1645
-            1647:          48 Load 78(inFM0)
-            1648:    6(float) Load 74(inF0)
-            1649:          48 MatrixTimesScalar 1647 1648
+            1647:    6(float) Load 85(inF0)
+            1648:          60 Load 89(inFM0)
+            1649:          60 MatrixTimesScalar 1648 1647
                               Store 1646(r6) 1649
-            1651:    6(float) Load 74(inF0)
-            1652:          48 Load 78(inFM0)
-            1653:          48 MatrixTimesScalar 1652 1651
+            1651:          60 Load 89(inFM0)
+            1652:    6(float) Load 85(inF0)
+            1653:          60 MatrixTimesScalar 1651 1652
                               Store 1650(r7) 1653
-            1655:          48 Load 78(inFM0)
-            1656:          48 Load 79(inFM1)
-            1657:          48 MatrixTimesMatrix 1655 1656
+            1655:          60 Load 90(inFM1)
+            1656:          60 Load 89(inFM0)
+            1657:          60 MatrixTimesMatrix 1655 1656
                               Store 1654(r8) 1657
                               Return
                               FunctionEnd
-89(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;):           2 Function None 82
-        83(inF0):      7(ptr) FunctionParameter
-        84(inF1):      7(ptr) FunctionParameter
-       85(inFV0):     37(ptr) FunctionParameter
-       86(inFV1):     37(ptr) FunctionParameter
-       87(inFM0):     57(ptr) FunctionParameter
-       88(inFM1):     57(ptr) FunctionParameter
-              90:             Label
+100(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;):           2 Function None 93
+        94(inF0):      7(ptr) FunctionParameter
+        95(inF1):      7(ptr) FunctionParameter
+       96(inFV0):     37(ptr) FunctionParameter
+       97(inFV1):     37(ptr) FunctionParameter
+       98(inFM0):     69(ptr) FunctionParameter
+       99(inFM1):     69(ptr) FunctionParameter
+             101:             Label
         1658(r0):      7(ptr) Variable Function
         1662(r1):     37(ptr) Variable Function
         1666(r2):     37(ptr) Variable Function
         1670(r3):      7(ptr) Variable Function
         1674(r4):     37(ptr) Variable Function
         1678(r5):     37(ptr) Variable Function
-        1682(r6):     57(ptr) Variable Function
-        1686(r7):     57(ptr) Variable Function
-        1690(r8):     57(ptr) Variable Function
-            1659:    6(float) Load 83(inF0)
-            1660:    6(float) Load 84(inF1)
+        1682(r6):     69(ptr) Variable Function
+        1686(r7):     69(ptr) Variable Function
+        1690(r8):     69(ptr) Variable Function
+            1659:    6(float) Load 95(inF1)
+            1660:    6(float) Load 94(inF0)
             1661:    6(float) FMul 1659 1660
                               Store 1658(r0) 1661
-            1663:   36(fvec3) Load 85(inFV0)
-            1664:    6(float) Load 83(inF0)
-            1665:   36(fvec3) VectorTimesScalar 1663 1664
+            1663:    6(float) Load 94(inF0)
+            1664:   36(fvec3) Load 96(inFV0)
+            1665:   36(fvec3) VectorTimesScalar 1664 1663
                               Store 1662(r1) 1665
-            1667:    6(float) Load 83(inF0)
-            1668:   36(fvec3) Load 85(inFV0)
-            1669:   36(fvec3) VectorTimesScalar 1668 1667
+            1667:   36(fvec3) Load 96(inFV0)
+            1668:    6(float) Load 94(inF0)
+            1669:   36(fvec3) VectorTimesScalar 1667 1668
                               Store 1666(r2) 1669
-            1671:   36(fvec3) Load 85(inFV0)
-            1672:   36(fvec3) Load 86(inFV1)
+            1671:   36(fvec3) Load 96(inFV0)
+            1672:   36(fvec3) Load 97(inFV1)
             1673:    6(float) Dot 1671 1672
                               Store 1670(r3) 1673
-            1675:          56 Load 87(inFM0)
-            1676:   36(fvec3) Load 85(inFV0)
-            1677:   36(fvec3) MatrixTimesVector 1675 1676
+            1675:   36(fvec3) Load 96(inFV0)
+            1676:          68 Load 98(inFM0)
+            1677:   36(fvec3) VectorTimesMatrix 1675 1676
                               Store 1674(r4) 1677
-            1679:   36(fvec3) Load 85(inFV0)
-            1680:          56 Load 87(inFM0)
-            1681:   36(fvec3) VectorTimesMatrix 1679 1680
+            1679:          68 Load 98(inFM0)
+            1680:   36(fvec3) Load 96(inFV0)
+            1681:   36(fvec3) MatrixTimesVector 1679 1680
                               Store 1678(r5) 1681
-            1683:          56 Load 87(inFM0)
-            1684:    6(float) Load 83(inF0)
-            1685:          56 MatrixTimesScalar 1683 1684
+            1683:    6(float) Load 94(inF0)
+            1684:          68 Load 98(inFM0)
+            1685:          68 MatrixTimesScalar 1684 1683
                               Store 1682(r6) 1685
-            1687:    6(float) Load 83(inF0)
-            1688:          56 Load 87(inFM0)
-            1689:          56 MatrixTimesScalar 1688 1687
+            1687:          68 Load 98(inFM0)
+            1688:    6(float) Load 94(inF0)
+            1689:          68 MatrixTimesScalar 1687 1688
                               Store 1686(r7) 1689
-            1691:          56 Load 87(inFM0)
-            1692:          56 Load 88(inFM1)
-            1693:          56 MatrixTimesMatrix 1691 1692
+            1691:          68 Load 99(inFM1)
+            1692:          68 Load 98(inFM0)
+            1693:          68 MatrixTimesMatrix 1691 1692
                               Store 1690(r8) 1693
                               Return
                               FunctionEnd
-99(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;):           2 Function None 92
-        93(inF0):      7(ptr) FunctionParameter
-        94(inF1):      7(ptr) FunctionParameter
-       95(inFV0):     91(ptr) FunctionParameter
-       96(inFV1):     91(ptr) FunctionParameter
-       97(inFM0):     66(ptr) FunctionParameter
-       98(inFM1):     66(ptr) FunctionParameter
-             100:             Label
+109(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;):           2 Function None 102
+       103(inF0):      7(ptr) FunctionParameter
+       104(inF1):      7(ptr) FunctionParameter
+      105(inFV0):     49(ptr) FunctionParameter
+      106(inFV1):     49(ptr) FunctionParameter
+      107(inFM0):     77(ptr) FunctionParameter
+      108(inFM1):     77(ptr) FunctionParameter
+             110:             Label
         1694(r0):      7(ptr) Variable Function
-        1698(r1):     91(ptr) Variable Function
-        1702(r2):     91(ptr) Variable Function
+        1698(r1):     49(ptr) Variable Function
+        1702(r2):     49(ptr) Variable Function
         1706(r3):      7(ptr) Variable Function
-        1710(r4):     91(ptr) Variable Function
-        1714(r5):     91(ptr) Variable Function
-        1718(r6):     66(ptr) Variable Function
-        1722(r7):     66(ptr) Variable Function
-        1726(r8):     66(ptr) Variable Function
-            1695:    6(float) Load 93(inF0)
-            1696:    6(float) Load 94(inF1)
+        1710(r4):     49(ptr) Variable Function
+        1714(r5):     49(ptr) Variable Function
+        1718(r6):     77(ptr) Variable Function
+        1722(r7):     77(ptr) Variable Function
+        1726(r8):     77(ptr) Variable Function
+            1695:    6(float) Load 104(inF1)
+            1696:    6(float) Load 103(inF0)
             1697:    6(float) FMul 1695 1696
                               Store 1694(r0) 1697
-            1699:   64(fvec4) Load 95(inFV0)
-            1700:    6(float) Load 93(inF0)
-            1701:   64(fvec4) VectorTimesScalar 1699 1700
+            1699:    6(float) Load 103(inF0)
+            1700:   48(fvec4) Load 105(inFV0)
+            1701:   48(fvec4) VectorTimesScalar 1700 1699
                               Store 1698(r1) 1701
-            1703:    6(float) Load 93(inF0)
-            1704:   64(fvec4) Load 95(inFV0)
-            1705:   64(fvec4) VectorTimesScalar 1704 1703
+            1703:   48(fvec4) Load 105(inFV0)
+            1704:    6(float) Load 103(inF0)
+            1705:   48(fvec4) VectorTimesScalar 1703 1704
                               Store 1702(r2) 1705
-            1707:   64(fvec4) Load 95(inFV0)
-            1708:   64(fvec4) Load 96(inFV1)
+            1707:   48(fvec4) Load 105(inFV0)
+            1708:   48(fvec4) Load 106(inFV1)
             1709:    6(float) Dot 1707 1708
                               Store 1706(r3) 1709
-            1711:          65 Load 97(inFM0)
-            1712:   64(fvec4) Load 95(inFV0)
-            1713:   64(fvec4) MatrixTimesVector 1711 1712
+            1711:   48(fvec4) Load 105(inFV0)
+            1712:          76 Load 107(inFM0)
+            1713:   48(fvec4) VectorTimesMatrix 1711 1712
                               Store 1710(r4) 1713
-            1715:   64(fvec4) Load 95(inFV0)
-            1716:          65 Load 97(inFM0)
-            1717:   64(fvec4) VectorTimesMatrix 1715 1716
+            1715:          76 Load 107(inFM0)
+            1716:   48(fvec4) Load 105(inFV0)
+            1717:   48(fvec4) MatrixTimesVector 1715 1716
                               Store 1714(r5) 1717
-            1719:          65 Load 97(inFM0)
-            1720:    6(float) Load 93(inF0)
-            1721:          65 MatrixTimesScalar 1719 1720
+            1719:    6(float) Load 103(inF0)
+            1720:          76 Load 107(inFM0)
+            1721:          76 MatrixTimesScalar 1720 1719
                               Store 1718(r6) 1721
-            1723:    6(float) Load 93(inF0)
-            1724:          65 Load 97(inFM0)
-            1725:          65 MatrixTimesScalar 1724 1723
+            1723:          76 Load 107(inFM0)
+            1724:    6(float) Load 103(inF0)
+            1725:          76 MatrixTimesScalar 1723 1724
                               Store 1722(r7) 1725
-            1727:          65 Load 97(inFM0)
-            1728:          65 Load 98(inFM1)
-            1729:          65 MatrixTimesMatrix 1727 1728
+            1727:          76 Load 108(inFM1)
+            1728:          76 Load 107(inFM0)
+            1729:          76 MatrixTimesMatrix 1727 1728
                               Store 1726(r8) 1729
                               Return
                               FunctionEnd
-119(TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42;):           2 Function None 109
-       110(inF0):      7(ptr) FunctionParameter
-       111(inF1):      7(ptr) FunctionParameter
-      112(inFV2):     25(ptr) FunctionParameter
-      113(inFV3):     37(ptr) FunctionParameter
-    114(inFM2x3):    102(ptr) FunctionParameter
-    115(inFM3x2):    104(ptr) FunctionParameter
-    116(inFM3x3):     57(ptr) FunctionParameter
-    117(inFM3x4):    106(ptr) FunctionParameter
-    118(inFM2x4):    108(ptr) FunctionParameter
-             120:             Label
+129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;):           2 Function None 119
+       120(inF0):      7(ptr) FunctionParameter
+       121(inF1):      7(ptr) FunctionParameter
+      122(inFV2):     25(ptr) FunctionParameter
+      123(inFV3):     37(ptr) FunctionParameter
+    124(inFM2x3):    112(ptr) FunctionParameter
+    125(inFM3x2):    114(ptr) FunctionParameter
+    126(inFM3x3):     69(ptr) FunctionParameter
+    127(inFM3x4):    116(ptr) FunctionParameter
+    128(inFM2x4):    118(ptr) FunctionParameter
+             130:             Label
        1730(r00):      7(ptr) Variable Function
        1734(r01):     25(ptr) Variable Function
        1738(r02):     37(ptr) Variable Function
@@ -8303,79 +8345,79 @@ gl_FragCoord origin is upper left
        1762(r08):     25(ptr) Variable Function
        1766(r09):     25(ptr) Variable Function
        1770(r10):     37(ptr) Variable Function
-       1774(r11):    102(ptr) Variable Function
-       1778(r12):    104(ptr) Variable Function
-       1782(r13):     49(ptr) Variable Function
-       1786(r14):    102(ptr) Variable Function
-       1790(r15):    108(ptr) Variable Function
-       1794(r16):    106(ptr) Variable Function
-            1731:    6(float) Load 110(inF0)
-            1732:    6(float) Load 111(inF1)
+       1774(r11):    112(ptr) Variable Function
+       1778(r12):    114(ptr) Variable Function
+       1782(r13):     61(ptr) Variable Function
+       1786(r14):    112(ptr) Variable Function
+       1790(r15):    118(ptr) Variable Function
+       1794(r16):    116(ptr) Variable Function
+            1731:    6(float) Load 121(inF1)
+            1732:    6(float) Load 120(inF0)
             1733:    6(float) FMul 1731 1732
                               Store 1730(r00) 1733
-            1735:   24(fvec2) Load 112(inFV2)
-            1736:    6(float) Load 110(inF0)
-            1737:   24(fvec2) VectorTimesScalar 1735 1736
+            1735:    6(float) Load 120(inF0)
+            1736:   24(fvec2) Load 122(inFV2)
+            1737:   24(fvec2) VectorTimesScalar 1736 1735
                               Store 1734(r01) 1737
-            1739:   36(fvec3) Load 113(inFV3)
-            1740:    6(float) Load 110(inF0)
-            1741:   36(fvec3) VectorTimesScalar 1739 1740
+            1739:    6(float) Load 120(inF0)
+            1740:   36(fvec3) Load 123(inFV3)
+            1741:   36(fvec3) VectorTimesScalar 1740 1739
                               Store 1738(r02) 1741
-            1743:    6(float) Load 110(inF0)
-            1744:   24(fvec2) Load 112(inFV2)
-            1745:   24(fvec2) VectorTimesScalar 1744 1743
+            1743:   24(fvec2) Load 122(inFV2)
+            1744:    6(float) Load 120(inF0)
+            1745:   24(fvec2) VectorTimesScalar 1743 1744
                               Store 1742(r03) 1745
-            1747:    6(float) Load 110(inF0)
-            1748:   36(fvec3) Load 113(inFV3)
-            1749:   36(fvec3) VectorTimesScalar 1748 1747
+            1747:   36(fvec3) Load 123(inFV3)
+            1748:    6(float) Load 120(inF0)
+            1749:   36(fvec3) VectorTimesScalar 1747 1748
                               Store 1746(r04) 1749
-            1751:   24(fvec2) Load 112(inFV2)
-            1752:   24(fvec2) Load 112(inFV2)
+            1751:   24(fvec2) Load 122(inFV2)
+            1752:   24(fvec2) Load 122(inFV2)
             1753:    6(float) Dot 1751 1752
                               Store 1750(r05) 1753
-            1755:   36(fvec3) Load 113(inFV3)
-            1756:   36(fvec3) Load 113(inFV3)
+            1755:   36(fvec3) Load 123(inFV3)
+            1756:   36(fvec3) Load 123(inFV3)
             1757:    6(float) Dot 1755 1756
                               Store 1754(r06) 1757
-            1759:   24(fvec2) Load 112(inFV2)
-            1760:         101 Load 114(inFM2x3)
-            1761:   36(fvec3) VectorTimesMatrix 1759 1760
+            1759:         111 Load 124(inFM2x3)
+            1760:   24(fvec2) Load 122(inFV2)
+            1761:   36(fvec3) MatrixTimesVector 1759 1760
                               Store 1758(r07) 1761
-            1763:   36(fvec3) Load 113(inFV3)
-            1764:         103 Load 115(inFM3x2)
-            1765:   24(fvec2) VectorTimesMatrix 1763 1764
+            1763:         113 Load 125(inFM3x2)
+            1764:   36(fvec3) Load 123(inFV3)
+            1765:   24(fvec2) MatrixTimesVector 1763 1764
                               Store 1762(r08) 1765
-            1767:         101 Load 114(inFM2x3)
-            1768:   36(fvec3) Load 113(inFV3)
-            1769:   24(fvec2) MatrixTimesVector 1767 1768
+            1767:   36(fvec3) Load 123(inFV3)
+            1768:         111 Load 124(inFM2x3)
+            1769:   24(fvec2) VectorTimesMatrix 1767 1768
                               Store 1766(r09) 1769
-            1771:         103 Load 115(inFM3x2)
-            1772:   24(fvec2) Load 112(inFV2)
-            1773:   36(fvec3) MatrixTimesVector 1771 1772
+            1771:   24(fvec2) Load 122(inFV2)
+            1772:         113 Load 125(inFM3x2)
+            1773:   36(fvec3) VectorTimesMatrix 1771 1772
                               Store 1770(r10) 1773
-            1775:         101 Load 114(inFM2x3)
-            1776:    6(float) Load 110(inF0)
-            1777:         101 MatrixTimesScalar 1775 1776
+            1775:    6(float) Load 120(inF0)
+            1776:         111 Load 124(inFM2x3)
+            1777:         111 MatrixTimesScalar 1776 1775
                               Store 1774(r11) 1777
-            1779:         103 Load 115(inFM3x2)
-            1780:    6(float) Load 110(inF0)
-            1781:         103 MatrixTimesScalar 1779 1780
+            1779:    6(float) Load 120(inF0)
+            1780:         113 Load 125(inFM3x2)
+            1781:         113 MatrixTimesScalar 1780 1779
                               Store 1778(r12) 1781
-            1783:         101 Load 114(inFM2x3)
-            1784:         103 Load 115(inFM3x2)
-            1785:          48 MatrixTimesMatrix 1783 1784
+            1783:         113 Load 125(inFM3x2)
+            1784:         111 Load 124(inFM2x3)
+            1785:          60 MatrixTimesMatrix 1783 1784
                               Store 1782(r13) 1785
-            1787:         101 Load 114(inFM2x3)
-            1788:          56 Load 116(inFM3x3)
-            1789:         101 MatrixTimesMatrix 1787 1788
+            1787:          68 Load 126(inFM3x3)
+            1788:         111 Load 124(inFM2x3)
+            1789:         111 MatrixTimesMatrix 1787 1788
                               Store 1786(r14) 1789
-            1791:         101 Load 114(inFM2x3)
-            1792:         105 Load 117(inFM3x4)
-            1793:         107 MatrixTimesMatrix 1791 1792
+            1791:         115 Load 127(inFM3x4)
+            1792:         111 Load 124(inFM2x3)
+            1793:         117 MatrixTimesMatrix 1791 1792
                               Store 1790(r15) 1793
-            1795:         103 Load 115(inFM3x2)
-            1796:         107 Load 118(inFM2x4)
-            1797:         105 MatrixTimesMatrix 1795 1796
+            1795:         117 Load 128(inFM2x4)
+            1796:         113 Load 125(inFM3x2)
+            1797:         115 MatrixTimesMatrix 1795 1796
                               Store 1794(r16) 1797
                               Return
                               FunctionEnd
index 8368e26..121c809 100644 (file)
@@ -1101,20 +1101,20 @@ Shader version: 450
 0:378        move second child to first child (temp float)
 0:378          'r0' (temp float)
 0:378          component-wise multiply (temp float)
-0:378            'inF0' (in float)
 0:378            'inF1' (in float)
+0:378            'inF0' (in float)
 0:378      Sequence
 0:378        move second child to first child (temp 2-component vector of float)
 0:378          'r1' (temp 2-component vector of float)
 0:378          vector-scale (temp 2-component vector of float)
-0:378            'inFV0' (in 2-component vector of float)
 0:378            'inF0' (in float)
+0:378            'inFV0' (in 2-component vector of float)
 0:378      Sequence
 0:378        move second child to first child (temp 2-component vector of float)
 0:378          'r2' (temp 2-component vector of float)
 0:378          vector-scale (temp 2-component vector of float)
-0:378            'inF0' (in float)
 0:378            'inFV0' (in 2-component vector of float)
+0:378            'inF0' (in float)
 0:378      Sequence
 0:378        move second child to first child (temp float)
 0:378          'r3' (temp float)
@@ -1124,33 +1124,33 @@ Shader version: 450
 0:378      Sequence
 0:378        move second child to first child (temp 2-component vector of float)
 0:378          'r4' (temp 2-component vector of float)
-0:378          matrix-times-vector (temp 2-component vector of float)
-0:378            'inFM0' (in 2X2 matrix of float)
+0:378          vector-times-matrix (temp 2-component vector of float)
 0:378            'inFV0' (in 2-component vector of float)
+0:378            'inFM0' (in 2X2 matrix of float)
 0:378      Sequence
 0:378        move second child to first child (temp 2-component vector of float)
 0:378          'r5' (temp 2-component vector of float)
-0:378          vector-times-matrix (temp 2-component vector of float)
-0:378            'inFV0' (in 2-component vector of float)
+0:378          matrix-times-vector (temp 2-component vector of float)
 0:378            'inFM0' (in 2X2 matrix of float)
+0:378            'inFV0' (in 2-component vector of float)
 0:378      Sequence
 0:378        move second child to first child (temp 2X2 matrix of float)
 0:378          'r6' (temp 2X2 matrix of float)
 0:378          matrix-scale (temp 2X2 matrix of float)
-0:378            'inFM0' (in 2X2 matrix of float)
 0:378            'inF0' (in float)
+0:378            'inFM0' (in 2X2 matrix of float)
 0:378      Sequence
 0:378        move second child to first child (temp 2X2 matrix of float)
 0:378          'r7' (temp 2X2 matrix of float)
 0:378          matrix-scale (temp 2X2 matrix of float)
-0:378            'inF0' (in float)
 0:378            'inFM0' (in 2X2 matrix of float)
+0:378            'inF0' (in float)
 0:378      Sequence
 0:378        move second child to first child (temp 2X2 matrix of float)
 0:378          'r8' (temp 2X2 matrix of float)
 0:378          matrix-multiply (temp 2X2 matrix of float)
-0:378            'inFM0' (in 2X2 matrix of float)
 0:378            'inFM1' (in 2X2 matrix of float)
+0:378            'inFM0' (in 2X2 matrix of float)
 0:384  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
 0:384    Function Parameters: 
 0:384      'inF0' (in float)
@@ -1164,20 +1164,20 @@ Shader version: 450
 0:385        move second child to first child (temp float)
 0:385          'r0' (temp float)
 0:385          component-wise multiply (temp float)
-0:385            'inF0' (in float)
 0:385            'inF1' (in float)
+0:385            'inF0' (in float)
 0:385      Sequence
 0:385        move second child to first child (temp 3-component vector of float)
 0:385          'r1' (temp 3-component vector of float)
 0:385          vector-scale (temp 3-component vector of float)
-0:385            'inFV0' (in 3-component vector of float)
 0:385            'inF0' (in float)
+0:385            'inFV0' (in 3-component vector of float)
 0:385      Sequence
 0:385        move second child to first child (temp 3-component vector of float)
 0:385          'r2' (temp 3-component vector of float)
 0:385          vector-scale (temp 3-component vector of float)
-0:385            'inF0' (in float)
 0:385            'inFV0' (in 3-component vector of float)
+0:385            'inF0' (in float)
 0:385      Sequence
 0:385        move second child to first child (temp float)
 0:385          'r3' (temp float)
@@ -1187,33 +1187,33 @@ Shader version: 450
 0:385      Sequence
 0:385        move second child to first child (temp 3-component vector of float)
 0:385          'r4' (temp 3-component vector of float)
-0:385          matrix-times-vector (temp 3-component vector of float)
-0:385            'inFM0' (in 3X3 matrix of float)
+0:385          vector-times-matrix (temp 3-component vector of float)
 0:385            'inFV0' (in 3-component vector of float)
+0:385            'inFM0' (in 3X3 matrix of float)
 0:385      Sequence
 0:385        move second child to first child (temp 3-component vector of float)
 0:385          'r5' (temp 3-component vector of float)
-0:385          vector-times-matrix (temp 3-component vector of float)
-0:385            'inFV0' (in 3-component vector of float)
+0:385          matrix-times-vector (temp 3-component vector of float)
 0:385            'inFM0' (in 3X3 matrix of float)
+0:385            'inFV0' (in 3-component vector of float)
 0:385      Sequence
 0:385        move second child to first child (temp 3X3 matrix of float)
 0:385          'r6' (temp 3X3 matrix of float)
 0:385          matrix-scale (temp 3X3 matrix of float)
-0:385            'inFM0' (in 3X3 matrix of float)
 0:385            'inF0' (in float)
+0:385            'inFM0' (in 3X3 matrix of float)
 0:385      Sequence
 0:385        move second child to first child (temp 3X3 matrix of float)
 0:385          'r7' (temp 3X3 matrix of float)
 0:385          matrix-scale (temp 3X3 matrix of float)
-0:385            'inF0' (in float)
 0:385            'inFM0' (in 3X3 matrix of float)
+0:385            'inF0' (in float)
 0:385      Sequence
 0:385        move second child to first child (temp 3X3 matrix of float)
 0:385          'r8' (temp 3X3 matrix of float)
 0:385          matrix-multiply (temp 3X3 matrix of float)
-0:385            'inFM0' (in 3X3 matrix of float)
 0:385            'inFM1' (in 3X3 matrix of float)
+0:385            'inFM0' (in 3X3 matrix of float)
 0:391  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
 0:391    Function Parameters: 
 0:391      'inF0' (in float)
@@ -1227,20 +1227,20 @@ Shader version: 450
 0:392        move second child to first child (temp float)
 0:392          'r0' (temp float)
 0:392          component-wise multiply (temp float)
-0:392            'inF0' (in float)
 0:392            'inF1' (in float)
+0:392            'inF0' (in float)
 0:392      Sequence
 0:392        move second child to first child (temp 4-component vector of float)
 0:392          'r1' (temp 4-component vector of float)
 0:392          vector-scale (temp 4-component vector of float)
-0:392            'inFV0' (in 4-component vector of float)
 0:392            'inF0' (in float)
+0:392            'inFV0' (in 4-component vector of float)
 0:392      Sequence
 0:392        move second child to first child (temp 4-component vector of float)
 0:392          'r2' (temp 4-component vector of float)
 0:392          vector-scale (temp 4-component vector of float)
-0:392            'inF0' (in float)
 0:392            'inFV0' (in 4-component vector of float)
+0:392            'inF0' (in float)
 0:392      Sequence
 0:392        move second child to first child (temp float)
 0:392          'r3' (temp float)
@@ -1250,75 +1250,75 @@ Shader version: 450
 0:392      Sequence
 0:392        move second child to first child (temp 4-component vector of float)
 0:392          'r4' (temp 4-component vector of float)
-0:392          matrix-times-vector (temp 4-component vector of float)
-0:392            'inFM0' (in 4X4 matrix of float)
+0:392          vector-times-matrix (temp 4-component vector of float)
 0:392            'inFV0' (in 4-component vector of float)
+0:392            'inFM0' (in 4X4 matrix of float)
 0:392      Sequence
 0:392        move second child to first child (temp 4-component vector of float)
 0:392          'r5' (temp 4-component vector of float)
-0:392          vector-times-matrix (temp 4-component vector of float)
-0:392            'inFV0' (in 4-component vector of float)
+0:392          matrix-times-vector (temp 4-component vector of float)
 0:392            'inFM0' (in 4X4 matrix of float)
+0:392            'inFV0' (in 4-component vector of float)
 0:392      Sequence
 0:392        move second child to first child (temp 4X4 matrix of float)
 0:392          'r6' (temp 4X4 matrix of float)
 0:392          matrix-scale (temp 4X4 matrix of float)
-0:392            'inFM0' (in 4X4 matrix of float)
 0:392            'inF0' (in float)
+0:392            'inFM0' (in 4X4 matrix of float)
 0:392      Sequence
 0:392        move second child to first child (temp 4X4 matrix of float)
 0:392          'r7' (temp 4X4 matrix of float)
 0:392          matrix-scale (temp 4X4 matrix of float)
-0:392            'inF0' (in float)
 0:392            'inFM0' (in 4X4 matrix of float)
+0:392            'inF0' (in float)
 0:392      Sequence
 0:392        move second child to first child (temp 4X4 matrix of float)
 0:392          'r8' (temp 4X4 matrix of float)
 0:392          matrix-multiply (temp 4X4 matrix of float)
-0:392            'inFM0' (in 4X4 matrix of float)
 0:392            'inFM1' (in 4X4 matrix of float)
-0:401  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void)
+0:392            'inFM0' (in 4X4 matrix of float)
+0:401  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
 0:401    Function Parameters: 
 0:401      'inF0' (in float)
 0:401      'inF1' (in float)
 0:401      'inFV2' (in 2-component vector of float)
 0:401      'inFV3' (in 3-component vector of float)
-0:401      'inFM2x3' (in 3X2 matrix of float)
-0:401      'inFM3x2' (in 2X3 matrix of float)
+0:401      'inFM2x3' (in 2X3 matrix of float)
+0:401      'inFM3x2' (in 3X2 matrix of float)
 0:401      'inFM3x3' (in 3X3 matrix of float)
-0:401      'inFM3x4' (in 4X3 matrix of float)
-0:401      'inFM2x4' (in 4X2 matrix of float)
+0:401      'inFM3x4' (in 3X4 matrix of float)
+0:401      'inFM2x4' (in 2X4 matrix of float)
 0:?     Sequence
 0:402      Sequence
 0:402        move second child to first child (temp float)
 0:402          'r00' (temp float)
 0:402          component-wise multiply (temp float)
-0:402            'inF0' (in float)
 0:402            'inF1' (in float)
+0:402            'inF0' (in float)
 0:403      Sequence
 0:403        move second child to first child (temp 2-component vector of float)
 0:403          'r01' (temp 2-component vector of float)
 0:403          vector-scale (temp 2-component vector of float)
-0:403            'inFV2' (in 2-component vector of float)
 0:403            'inF0' (in float)
+0:403            'inFV2' (in 2-component vector of float)
 0:404      Sequence
 0:404        move second child to first child (temp 3-component vector of float)
 0:404          'r02' (temp 3-component vector of float)
 0:404          vector-scale (temp 3-component vector of float)
-0:404            'inFV3' (in 3-component vector of float)
 0:404            'inF0' (in float)
+0:404            'inFV3' (in 3-component vector of float)
 0:405      Sequence
 0:405        move second child to first child (temp 2-component vector of float)
 0:405          'r03' (temp 2-component vector of float)
 0:405          vector-scale (temp 2-component vector of float)
-0:405            'inF0' (in float)
 0:405            'inFV2' (in 2-component vector of float)
+0:405            'inF0' (in float)
 0:406      Sequence
 0:406        move second child to first child (temp 3-component vector of float)
 0:406          'r04' (temp 3-component vector of float)
 0:406          vector-scale (temp 3-component vector of float)
-0:406            'inF0' (in float)
 0:406            'inFV3' (in 3-component vector of float)
+0:406            'inF0' (in float)
 0:407      Sequence
 0:407        move second child to first child (temp float)
 0:407          'r05' (temp float)
@@ -1334,63 +1334,63 @@ Shader version: 450
 0:409      Sequence
 0:409        move second child to first child (temp 3-component vector of float)
 0:409          'r07' (temp 3-component vector of float)
-0:409          vector-times-matrix (temp 3-component vector of float)
+0:409          matrix-times-vector (temp 3-component vector of float)
+0:409            'inFM2x3' (in 2X3 matrix of float)
 0:409            'inFV2' (in 2-component vector of float)
-0:409            'inFM2x3' (in 3X2 matrix of float)
 0:410      Sequence
 0:410        move second child to first child (temp 2-component vector of float)
 0:410          'r08' (temp 2-component vector of float)
-0:410          vector-times-matrix (temp 2-component vector of float)
+0:410          matrix-times-vector (temp 2-component vector of float)
+0:410            'inFM3x2' (in 3X2 matrix of float)
 0:410            'inFV3' (in 3-component vector of float)
-0:410            'inFM3x2' (in 2X3 matrix of float)
 0:411      Sequence
 0:411        move second child to first child (temp 2-component vector of float)
 0:411          'r09' (temp 2-component vector of float)
-0:411          matrix-times-vector (temp 2-component vector of float)
-0:411            'inFM2x3' (in 3X2 matrix of float)
+0:411          vector-times-matrix (temp 2-component vector of float)
 0:411            'inFV3' (in 3-component vector of float)
+0:411            'inFM2x3' (in 2X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3-component vector of float)
 0:412          'r10' (temp 3-component vector of float)
-0:412          matrix-times-vector (temp 3-component vector of float)
-0:412            'inFM3x2' (in 2X3 matrix of float)
+0:412          vector-times-matrix (temp 3-component vector of float)
 0:412            'inFV2' (in 2-component vector of float)
+0:412            'inFM3x2' (in 3X2 matrix of float)
 0:413      Sequence
-0:413        move second child to first child (temp 3X2 matrix of float)
-0:413          'r11' (temp 3X2 matrix of float)
-0:413          matrix-scale (temp 3X2 matrix of float)
-0:413            'inFM2x3' (in 3X2 matrix of float)
+0:413        move second child to first child (temp 2X3 matrix of float)
+0:413          'r11' (temp 2X3 matrix of float)
+0:413          matrix-scale (temp 2X3 matrix of float)
 0:413            'inF0' (in float)
+0:413            'inFM2x3' (in 2X3 matrix of float)
 0:414      Sequence
-0:414        move second child to first child (temp 2X3 matrix of float)
-0:414          'r12' (temp 2X3 matrix of float)
-0:414          matrix-scale (temp 2X3 matrix of float)
-0:414            'inFM3x2' (in 2X3 matrix of float)
+0:414        move second child to first child (temp 3X2 matrix of float)
+0:414          'r12' (temp 3X2 matrix of float)
+0:414          matrix-scale (temp 3X2 matrix of float)
 0:414            'inF0' (in float)
+0:414            'inFM3x2' (in 3X2 matrix of float)
 0:415      Sequence
 0:415        move second child to first child (temp 2X2 matrix of float)
 0:415          'r13' (temp 2X2 matrix of float)
 0:415          matrix-multiply (temp 2X2 matrix of float)
-0:415            'inFM2x3' (in 3X2 matrix of float)
-0:415            'inFM3x2' (in 2X3 matrix of float)
+0:415            'inFM3x2' (in 3X2 matrix of float)
+0:415            'inFM2x3' (in 2X3 matrix of float)
 0:416      Sequence
-0:416        move second child to first child (temp 3X2 matrix of float)
-0:416          'r14' (temp 3X2 matrix of float)
-0:416          matrix-multiply (temp 3X2 matrix of float)
-0:416            'inFM2x3' (in 3X2 matrix of float)
+0:416        move second child to first child (temp 2X3 matrix of float)
+0:416          'r14' (temp 2X3 matrix of float)
+0:416          matrix-multiply (temp 2X3 matrix of float)
 0:416            'inFM3x3' (in 3X3 matrix of float)
+0:416            'inFM2x3' (in 2X3 matrix of float)
 0:417      Sequence
-0:417        move second child to first child (temp 4X2 matrix of float)
-0:417          'r15' (temp 4X2 matrix of float)
-0:417          matrix-multiply (temp 4X2 matrix of float)
-0:417            'inFM2x3' (in 3X2 matrix of float)
-0:417            'inFM3x4' (in 4X3 matrix of float)
+0:417        move second child to first child (temp 2X4 matrix of float)
+0:417          'r15' (temp 2X4 matrix of float)
+0:417          matrix-multiply (temp 2X4 matrix of float)
+0:417            'inFM3x4' (in 3X4 matrix of float)
+0:417            'inFM2x3' (in 2X3 matrix of float)
 0:418      Sequence
-0:418        move second child to first child (temp 4X3 matrix of float)
-0:418          'r16' (temp 4X3 matrix of float)
-0:418          matrix-multiply (temp 4X3 matrix of float)
-0:418            'inFM3x2' (in 2X3 matrix of float)
-0:418            'inFM2x4' (in 4X2 matrix of float)
+0:418        move second child to first child (temp 3X4 matrix of float)
+0:418          'r16' (temp 3X4 matrix of float)
+0:418          matrix-multiply (temp 3X4 matrix of float)
+0:418            'inFM2x4' (in 2X4 matrix of float)
+0:418            'inFM3x2' (in 3X2 matrix of float)
 0:?   Linker Objects
 
 
@@ -2499,20 +2499,20 @@ Shader version: 450
 0:378        move second child to first child (temp float)
 0:378          'r0' (temp float)
 0:378          component-wise multiply (temp float)
-0:378            'inF0' (in float)
 0:378            'inF1' (in float)
+0:378            'inF0' (in float)
 0:378      Sequence
 0:378        move second child to first child (temp 2-component vector of float)
 0:378          'r1' (temp 2-component vector of float)
 0:378          vector-scale (temp 2-component vector of float)
-0:378            'inFV0' (in 2-component vector of float)
 0:378            'inF0' (in float)
+0:378            'inFV0' (in 2-component vector of float)
 0:378      Sequence
 0:378        move second child to first child (temp 2-component vector of float)
 0:378          'r2' (temp 2-component vector of float)
 0:378          vector-scale (temp 2-component vector of float)
-0:378            'inF0' (in float)
 0:378            'inFV0' (in 2-component vector of float)
+0:378            'inF0' (in float)
 0:378      Sequence
 0:378        move second child to first child (temp float)
 0:378          'r3' (temp float)
@@ -2522,33 +2522,33 @@ Shader version: 450
 0:378      Sequence
 0:378        move second child to first child (temp 2-component vector of float)
 0:378          'r4' (temp 2-component vector of float)
-0:378          matrix-times-vector (temp 2-component vector of float)
-0:378            'inFM0' (in 2X2 matrix of float)
+0:378          vector-times-matrix (temp 2-component vector of float)
 0:378            'inFV0' (in 2-component vector of float)
+0:378            'inFM0' (in 2X2 matrix of float)
 0:378      Sequence
 0:378        move second child to first child (temp 2-component vector of float)
 0:378          'r5' (temp 2-component vector of float)
-0:378          vector-times-matrix (temp 2-component vector of float)
-0:378            'inFV0' (in 2-component vector of float)
+0:378          matrix-times-vector (temp 2-component vector of float)
 0:378            'inFM0' (in 2X2 matrix of float)
+0:378            'inFV0' (in 2-component vector of float)
 0:378      Sequence
 0:378        move second child to first child (temp 2X2 matrix of float)
 0:378          'r6' (temp 2X2 matrix of float)
 0:378          matrix-scale (temp 2X2 matrix of float)
-0:378            'inFM0' (in 2X2 matrix of float)
 0:378            'inF0' (in float)
+0:378            'inFM0' (in 2X2 matrix of float)
 0:378      Sequence
 0:378        move second child to first child (temp 2X2 matrix of float)
 0:378          'r7' (temp 2X2 matrix of float)
 0:378          matrix-scale (temp 2X2 matrix of float)
-0:378            'inF0' (in float)
 0:378            'inFM0' (in 2X2 matrix of float)
+0:378            'inF0' (in float)
 0:378      Sequence
 0:378        move second child to first child (temp 2X2 matrix of float)
 0:378          'r8' (temp 2X2 matrix of float)
 0:378          matrix-multiply (temp 2X2 matrix of float)
-0:378            'inFM0' (in 2X2 matrix of float)
 0:378            'inFM1' (in 2X2 matrix of float)
+0:378            'inFM0' (in 2X2 matrix of float)
 0:384  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
 0:384    Function Parameters: 
 0:384      'inF0' (in float)
@@ -2562,20 +2562,20 @@ Shader version: 450
 0:385        move second child to first child (temp float)
 0:385          'r0' (temp float)
 0:385          component-wise multiply (temp float)
-0:385            'inF0' (in float)
 0:385            'inF1' (in float)
+0:385            'inF0' (in float)
 0:385      Sequence
 0:385        move second child to first child (temp 3-component vector of float)
 0:385          'r1' (temp 3-component vector of float)
 0:385          vector-scale (temp 3-component vector of float)
-0:385            'inFV0' (in 3-component vector of float)
 0:385            'inF0' (in float)
+0:385            'inFV0' (in 3-component vector of float)
 0:385      Sequence
 0:385        move second child to first child (temp 3-component vector of float)
 0:385          'r2' (temp 3-component vector of float)
 0:385          vector-scale (temp 3-component vector of float)
-0:385            'inF0' (in float)
 0:385            'inFV0' (in 3-component vector of float)
+0:385            'inF0' (in float)
 0:385      Sequence
 0:385        move second child to first child (temp float)
 0:385          'r3' (temp float)
@@ -2585,33 +2585,33 @@ Shader version: 450
 0:385      Sequence
 0:385        move second child to first child (temp 3-component vector of float)
 0:385          'r4' (temp 3-component vector of float)
-0:385          matrix-times-vector (temp 3-component vector of float)
-0:385            'inFM0' (in 3X3 matrix of float)
+0:385          vector-times-matrix (temp 3-component vector of float)
 0:385            'inFV0' (in 3-component vector of float)
+0:385            'inFM0' (in 3X3 matrix of float)
 0:385      Sequence
 0:385        move second child to first child (temp 3-component vector of float)
 0:385          'r5' (temp 3-component vector of float)
-0:385          vector-times-matrix (temp 3-component vector of float)
-0:385            'inFV0' (in 3-component vector of float)
+0:385          matrix-times-vector (temp 3-component vector of float)
 0:385            'inFM0' (in 3X3 matrix of float)
+0:385            'inFV0' (in 3-component vector of float)
 0:385      Sequence
 0:385        move second child to first child (temp 3X3 matrix of float)
 0:385          'r6' (temp 3X3 matrix of float)
 0:385          matrix-scale (temp 3X3 matrix of float)
-0:385            'inFM0' (in 3X3 matrix of float)
 0:385            'inF0' (in float)
+0:385            'inFM0' (in 3X3 matrix of float)
 0:385      Sequence
 0:385        move second child to first child (temp 3X3 matrix of float)
 0:385          'r7' (temp 3X3 matrix of float)
 0:385          matrix-scale (temp 3X3 matrix of float)
-0:385            'inF0' (in float)
 0:385            'inFM0' (in 3X3 matrix of float)
+0:385            'inF0' (in float)
 0:385      Sequence
 0:385        move second child to first child (temp 3X3 matrix of float)
 0:385          'r8' (temp 3X3 matrix of float)
 0:385          matrix-multiply (temp 3X3 matrix of float)
-0:385            'inFM0' (in 3X3 matrix of float)
 0:385            'inFM1' (in 3X3 matrix of float)
+0:385            'inFM0' (in 3X3 matrix of float)
 0:391  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
 0:391    Function Parameters: 
 0:391      'inF0' (in float)
@@ -2625,20 +2625,20 @@ Shader version: 450
 0:392        move second child to first child (temp float)
 0:392          'r0' (temp float)
 0:392          component-wise multiply (temp float)
-0:392            'inF0' (in float)
 0:392            'inF1' (in float)
+0:392            'inF0' (in float)
 0:392      Sequence
 0:392        move second child to first child (temp 4-component vector of float)
 0:392          'r1' (temp 4-component vector of float)
 0:392          vector-scale (temp 4-component vector of float)
-0:392            'inFV0' (in 4-component vector of float)
 0:392            'inF0' (in float)
+0:392            'inFV0' (in 4-component vector of float)
 0:392      Sequence
 0:392        move second child to first child (temp 4-component vector of float)
 0:392          'r2' (temp 4-component vector of float)
 0:392          vector-scale (temp 4-component vector of float)
-0:392            'inF0' (in float)
 0:392            'inFV0' (in 4-component vector of float)
+0:392            'inF0' (in float)
 0:392      Sequence
 0:392        move second child to first child (temp float)
 0:392          'r3' (temp float)
@@ -2648,75 +2648,75 @@ Shader version: 450
 0:392      Sequence
 0:392        move second child to first child (temp 4-component vector of float)
 0:392          'r4' (temp 4-component vector of float)
-0:392          matrix-times-vector (temp 4-component vector of float)
-0:392            'inFM0' (in 4X4 matrix of float)
+0:392          vector-times-matrix (temp 4-component vector of float)
 0:392            'inFV0' (in 4-component vector of float)
+0:392            'inFM0' (in 4X4 matrix of float)
 0:392      Sequence
 0:392        move second child to first child (temp 4-component vector of float)
 0:392          'r5' (temp 4-component vector of float)
-0:392          vector-times-matrix (temp 4-component vector of float)
-0:392            'inFV0' (in 4-component vector of float)
+0:392          matrix-times-vector (temp 4-component vector of float)
 0:392            'inFM0' (in 4X4 matrix of float)
+0:392            'inFV0' (in 4-component vector of float)
 0:392      Sequence
 0:392        move second child to first child (temp 4X4 matrix of float)
 0:392          'r6' (temp 4X4 matrix of float)
 0:392          matrix-scale (temp 4X4 matrix of float)
-0:392            'inFM0' (in 4X4 matrix of float)
 0:392            'inF0' (in float)
+0:392            'inFM0' (in 4X4 matrix of float)
 0:392      Sequence
 0:392        move second child to first child (temp 4X4 matrix of float)
 0:392          'r7' (temp 4X4 matrix of float)
 0:392          matrix-scale (temp 4X4 matrix of float)
-0:392            'inF0' (in float)
 0:392            'inFM0' (in 4X4 matrix of float)
+0:392            'inF0' (in float)
 0:392      Sequence
 0:392        move second child to first child (temp 4X4 matrix of float)
 0:392          'r8' (temp 4X4 matrix of float)
 0:392          matrix-multiply (temp 4X4 matrix of float)
-0:392            'inFM0' (in 4X4 matrix of float)
 0:392            'inFM1' (in 4X4 matrix of float)
-0:401  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void)
+0:392            'inFM0' (in 4X4 matrix of float)
+0:401  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
 0:401    Function Parameters: 
 0:401      'inF0' (in float)
 0:401      'inF1' (in float)
 0:401      'inFV2' (in 2-component vector of float)
 0:401      'inFV3' (in 3-component vector of float)
-0:401      'inFM2x3' (in 3X2 matrix of float)
-0:401      'inFM3x2' (in 2X3 matrix of float)
+0:401      'inFM2x3' (in 2X3 matrix of float)
+0:401      'inFM3x2' (in 3X2 matrix of float)
 0:401      'inFM3x3' (in 3X3 matrix of float)
-0:401      'inFM3x4' (in 4X3 matrix of float)
-0:401      'inFM2x4' (in 4X2 matrix of float)
+0:401      'inFM3x4' (in 3X4 matrix of float)
+0:401      'inFM2x4' (in 2X4 matrix of float)
 0:?     Sequence
 0:402      Sequence
 0:402        move second child to first child (temp float)
 0:402          'r00' (temp float)
 0:402          component-wise multiply (temp float)
-0:402            'inF0' (in float)
 0:402            'inF1' (in float)
+0:402            'inF0' (in float)
 0:403      Sequence
 0:403        move second child to first child (temp 2-component vector of float)
 0:403          'r01' (temp 2-component vector of float)
 0:403          vector-scale (temp 2-component vector of float)
-0:403            'inFV2' (in 2-component vector of float)
 0:403            'inF0' (in float)
+0:403            'inFV2' (in 2-component vector of float)
 0:404      Sequence
 0:404        move second child to first child (temp 3-component vector of float)
 0:404          'r02' (temp 3-component vector of float)
 0:404          vector-scale (temp 3-component vector of float)
-0:404            'inFV3' (in 3-component vector of float)
 0:404            'inF0' (in float)
+0:404            'inFV3' (in 3-component vector of float)
 0:405      Sequence
 0:405        move second child to first child (temp 2-component vector of float)
 0:405          'r03' (temp 2-component vector of float)
 0:405          vector-scale (temp 2-component vector of float)
-0:405            'inF0' (in float)
 0:405            'inFV2' (in 2-component vector of float)
+0:405            'inF0' (in float)
 0:406      Sequence
 0:406        move second child to first child (temp 3-component vector of float)
 0:406          'r04' (temp 3-component vector of float)
 0:406          vector-scale (temp 3-component vector of float)
-0:406            'inF0' (in float)
 0:406            'inFV3' (in 3-component vector of float)
+0:406            'inF0' (in float)
 0:407      Sequence
 0:407        move second child to first child (temp float)
 0:407          'r05' (temp float)
@@ -2732,63 +2732,63 @@ Shader version: 450
 0:409      Sequence
 0:409        move second child to first child (temp 3-component vector of float)
 0:409          'r07' (temp 3-component vector of float)
-0:409          vector-times-matrix (temp 3-component vector of float)
+0:409          matrix-times-vector (temp 3-component vector of float)
+0:409            'inFM2x3' (in 2X3 matrix of float)
 0:409            'inFV2' (in 2-component vector of float)
-0:409            'inFM2x3' (in 3X2 matrix of float)
 0:410      Sequence
 0:410        move second child to first child (temp 2-component vector of float)
 0:410          'r08' (temp 2-component vector of float)
-0:410          vector-times-matrix (temp 2-component vector of float)
+0:410          matrix-times-vector (temp 2-component vector of float)
+0:410            'inFM3x2' (in 3X2 matrix of float)
 0:410            'inFV3' (in 3-component vector of float)
-0:410            'inFM3x2' (in 2X3 matrix of float)
 0:411      Sequence
 0:411        move second child to first child (temp 2-component vector of float)
 0:411          'r09' (temp 2-component vector of float)
-0:411          matrix-times-vector (temp 2-component vector of float)
-0:411            'inFM2x3' (in 3X2 matrix of float)
+0:411          vector-times-matrix (temp 2-component vector of float)
 0:411            'inFV3' (in 3-component vector of float)
+0:411            'inFM2x3' (in 2X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3-component vector of float)
 0:412          'r10' (temp 3-component vector of float)
-0:412          matrix-times-vector (temp 3-component vector of float)
-0:412            'inFM3x2' (in 2X3 matrix of float)
+0:412          vector-times-matrix (temp 3-component vector of float)
 0:412            'inFV2' (in 2-component vector of float)
+0:412            'inFM3x2' (in 3X2 matrix of float)
 0:413      Sequence
-0:413        move second child to first child (temp 3X2 matrix of float)
-0:413          'r11' (temp 3X2 matrix of float)
-0:413          matrix-scale (temp 3X2 matrix of float)
-0:413            'inFM2x3' (in 3X2 matrix of float)
+0:413        move second child to first child (temp 2X3 matrix of float)
+0:413          'r11' (temp 2X3 matrix of float)
+0:413          matrix-scale (temp 2X3 matrix of float)
 0:413            'inF0' (in float)
+0:413            'inFM2x3' (in 2X3 matrix of float)
 0:414      Sequence
-0:414        move second child to first child (temp 2X3 matrix of float)
-0:414          'r12' (temp 2X3 matrix of float)
-0:414          matrix-scale (temp 2X3 matrix of float)
-0:414            'inFM3x2' (in 2X3 matrix of float)
+0:414        move second child to first child (temp 3X2 matrix of float)
+0:414          'r12' (temp 3X2 matrix of float)
+0:414          matrix-scale (temp 3X2 matrix of float)
 0:414            'inF0' (in float)
+0:414            'inFM3x2' (in 3X2 matrix of float)
 0:415      Sequence
 0:415        move second child to first child (temp 2X2 matrix of float)
 0:415          'r13' (temp 2X2 matrix of float)
 0:415          matrix-multiply (temp 2X2 matrix of float)
-0:415            'inFM2x3' (in 3X2 matrix of float)
-0:415            'inFM3x2' (in 2X3 matrix of float)
+0:415            'inFM3x2' (in 3X2 matrix of float)
+0:415            'inFM2x3' (in 2X3 matrix of float)
 0:416      Sequence
-0:416        move second child to first child (temp 3X2 matrix of float)
-0:416          'r14' (temp 3X2 matrix of float)
-0:416          matrix-multiply (temp 3X2 matrix of float)
-0:416            'inFM2x3' (in 3X2 matrix of float)
+0:416        move second child to first child (temp 2X3 matrix of float)
+0:416          'r14' (temp 2X3 matrix of float)
+0:416          matrix-multiply (temp 2X3 matrix of float)
 0:416            'inFM3x3' (in 3X3 matrix of float)
+0:416            'inFM2x3' (in 2X3 matrix of float)
 0:417      Sequence
-0:417        move second child to first child (temp 4X2 matrix of float)
-0:417          'r15' (temp 4X2 matrix of float)
-0:417          matrix-multiply (temp 4X2 matrix of float)
-0:417            'inFM2x3' (in 3X2 matrix of float)
-0:417            'inFM3x4' (in 4X3 matrix of float)
+0:417        move second child to first child (temp 2X4 matrix of float)
+0:417          'r15' (temp 2X4 matrix of float)
+0:417          matrix-multiply (temp 2X4 matrix of float)
+0:417            'inFM3x4' (in 3X4 matrix of float)
+0:417            'inFM2x3' (in 2X3 matrix of float)
 0:418      Sequence
-0:418        move second child to first child (temp 4X3 matrix of float)
-0:418          'r16' (temp 4X3 matrix of float)
-0:418          matrix-multiply (temp 4X3 matrix of float)
-0:418            'inFM3x2' (in 2X3 matrix of float)
-0:418            'inFM2x4' (in 4X2 matrix of float)
+0:418        move second child to first child (temp 3X4 matrix of float)
+0:418          'r16' (temp 3X4 matrix of float)
+0:418          matrix-multiply (temp 3X4 matrix of float)
+0:418            'inFM2x4' (in 2X4 matrix of float)
+0:418            'inFM3x2' (in 3X2 matrix of float)
 0:?   Linker Objects
 
 // Module Version 10000
@@ -2861,7 +2861,7 @@ Shader version: 450
                               Name 106  "inFV1"
                               Name 107  "inFM0"
                               Name 108  "inFM1"
-                              Name 129  "TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42;"
+                              Name 129  "TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;"
                               Name 120  "inF0"
                               Name 121  "inF1"
                               Name 122  "inFV2"
@@ -2957,13 +2957,13 @@ Shader version: 450
               84:             TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 25(ptr) 61(ptr) 61(ptr)
               93:             TypeFunction 2 7(ptr) 7(ptr) 37(ptr) 37(ptr) 69(ptr) 69(ptr)
              102:             TypeFunction 2 7(ptr) 7(ptr) 49(ptr) 49(ptr) 77(ptr) 77(ptr)
-             111:             TypeMatrix 24(fvec2) 3
+             111:             TypeMatrix 36(fvec3) 2
              112:             TypePointer Function 111
-             113:             TypeMatrix 36(fvec3) 2
+             113:             TypeMatrix 24(fvec2) 3
              114:             TypePointer Function 113
-             115:             TypeMatrix 36(fvec3) 4
+             115:             TypeMatrix 48(fvec4) 3
              116:             TypePointer Function 115
-             117:             TypeMatrix 24(fvec2) 4
+             117:             TypeMatrix 48(fvec4) 2
              118:             TypePointer Function 117
              119:             TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 112(ptr) 114(ptr) 69(ptr) 116(ptr) 118(ptr)
              132:             TypeBool
@@ -3986,40 +3986,40 @@ Shader version: 450
         1086(r6):     61(ptr) Variable Function
         1090(r7):     61(ptr) Variable Function
         1094(r8):     61(ptr) Variable Function
-            1063:    6(float) Load 85(inF0)
-            1064:    6(float) Load 86(inF1)
+            1063:    6(float) Load 86(inF1)
+            1064:    6(float) Load 85(inF0)
             1065:    6(float) FMul 1063 1064
                               Store 1062(r0) 1065
-            1067:   24(fvec2) Load 87(inFV0)
-            1068:    6(float) Load 85(inF0)
-            1069:   24(fvec2) VectorTimesScalar 1067 1068
+            1067:    6(float) Load 85(inF0)
+            1068:   24(fvec2) Load 87(inFV0)
+            1069:   24(fvec2) VectorTimesScalar 1068 1067
                               Store 1066(r1) 1069
-            1071:    6(float) Load 85(inF0)
-            1072:   24(fvec2) Load 87(inFV0)
-            1073:   24(fvec2) VectorTimesScalar 1072 1071
+            1071:   24(fvec2) Load 87(inFV0)
+            1072:    6(float) Load 85(inF0)
+            1073:   24(fvec2) VectorTimesScalar 1071 1072
                               Store 1070(r2) 1073
             1075:   24(fvec2) Load 87(inFV0)
             1076:   24(fvec2) Load 88(inFV1)
             1077:    6(float) Dot 1075 1076
                               Store 1074(r3) 1077
-            1079:          60 Load 89(inFM0)
-            1080:   24(fvec2) Load 87(inFV0)
-            1081:   24(fvec2) MatrixTimesVector 1079 1080
+            1079:   24(fvec2) Load 87(inFV0)
+            1080:          60 Load 89(inFM0)
+            1081:   24(fvec2) VectorTimesMatrix 1079 1080
                               Store 1078(r4) 1081
-            1083:   24(fvec2) Load 87(inFV0)
-            1084:          60 Load 89(inFM0)
-            1085:   24(fvec2) VectorTimesMatrix 1083 1084
+            1083:          60 Load 89(inFM0)
+            1084:   24(fvec2) Load 87(inFV0)
+            1085:   24(fvec2) MatrixTimesVector 1083 1084
                               Store 1082(r5) 1085
-            1087:          60 Load 89(inFM0)
-            1088:    6(float) Load 85(inF0)
-            1089:          60 MatrixTimesScalar 1087 1088
+            1087:    6(float) Load 85(inF0)
+            1088:          60 Load 89(inFM0)
+            1089:          60 MatrixTimesScalar 1088 1087
                               Store 1086(r6) 1089
-            1091:    6(float) Load 85(inF0)
-            1092:          60 Load 89(inFM0)
-            1093:          60 MatrixTimesScalar 1092 1091
+            1091:          60 Load 89(inFM0)
+            1092:    6(float) Load 85(inF0)
+            1093:          60 MatrixTimesScalar 1091 1092
                               Store 1090(r7) 1093
-            1095:          60 Load 89(inFM0)
-            1096:          60 Load 90(inFM1)
+            1095:          60 Load 90(inFM1)
+            1096:          60 Load 89(inFM0)
             1097:          60 MatrixTimesMatrix 1095 1096
                               Store 1094(r8) 1097
                               Return
@@ -4041,40 +4041,40 @@ Shader version: 450
         1122(r6):     69(ptr) Variable Function
         1126(r7):     69(ptr) Variable Function
         1130(r8):     69(ptr) Variable Function
-            1099:    6(float) Load 94(inF0)
-            1100:    6(float) Load 95(inF1)
+            1099:    6(float) Load 95(inF1)
+            1100:    6(float) Load 94(inF0)
             1101:    6(float) FMul 1099 1100
                               Store 1098(r0) 1101
-            1103:   36(fvec3) Load 96(inFV0)
-            1104:    6(float) Load 94(inF0)
-            1105:   36(fvec3) VectorTimesScalar 1103 1104
+            1103:    6(float) Load 94(inF0)
+            1104:   36(fvec3) Load 96(inFV0)
+            1105:   36(fvec3) VectorTimesScalar 1104 1103
                               Store 1102(r1) 1105
-            1107:    6(float) Load 94(inF0)
-            1108:   36(fvec3) Load 96(inFV0)
-            1109:   36(fvec3) VectorTimesScalar 1108 1107
+            1107:   36(fvec3) Load 96(inFV0)
+            1108:    6(float) Load 94(inF0)
+            1109:   36(fvec3) VectorTimesScalar 1107 1108
                               Store 1106(r2) 1109
             1111:   36(fvec3) Load 96(inFV0)
             1112:   36(fvec3) Load 97(inFV1)
             1113:    6(float) Dot 1111 1112
                               Store 1110(r3) 1113
-            1115:          68 Load 98(inFM0)
-            1116:   36(fvec3) Load 96(inFV0)
-            1117:   36(fvec3) MatrixTimesVector 1115 1116
+            1115:   36(fvec3) Load 96(inFV0)
+            1116:          68 Load 98(inFM0)
+            1117:   36(fvec3) VectorTimesMatrix 1115 1116
                               Store 1114(r4) 1117
-            1119:   36(fvec3) Load 96(inFV0)
-            1120:          68 Load 98(inFM0)
-            1121:   36(fvec3) VectorTimesMatrix 1119 1120
+            1119:          68 Load 98(inFM0)
+            1120:   36(fvec3) Load 96(inFV0)
+            1121:   36(fvec3) MatrixTimesVector 1119 1120
                               Store 1118(r5) 1121
-            1123:          68 Load 98(inFM0)
-            1124:    6(float) Load 94(inF0)
-            1125:          68 MatrixTimesScalar 1123 1124
+            1123:    6(float) Load 94(inF0)
+            1124:          68 Load 98(inFM0)
+            1125:          68 MatrixTimesScalar 1124 1123
                               Store 1122(r6) 1125
-            1127:    6(float) Load 94(inF0)
-            1128:          68 Load 98(inFM0)
-            1129:          68 MatrixTimesScalar 1128 1127
+            1127:          68 Load 98(inFM0)
+            1128:    6(float) Load 94(inF0)
+            1129:          68 MatrixTimesScalar 1127 1128
                               Store 1126(r7) 1129
-            1131:          68 Load 98(inFM0)
-            1132:          68 Load 99(inFM1)
+            1131:          68 Load 99(inFM1)
+            1132:          68 Load 98(inFM0)
             1133:          68 MatrixTimesMatrix 1131 1132
                               Store 1130(r8) 1133
                               Return
@@ -4096,45 +4096,45 @@ Shader version: 450
         1158(r6):     77(ptr) Variable Function
         1162(r7):     77(ptr) Variable Function
         1166(r8):     77(ptr) Variable Function
-            1135:    6(float) Load 103(inF0)
-            1136:    6(float) Load 104(inF1)
+            1135:    6(float) Load 104(inF1)
+            1136:    6(float) Load 103(inF0)
             1137:    6(float) FMul 1135 1136
                               Store 1134(r0) 1137
-            1139:   48(fvec4) Load 105(inFV0)
-            1140:    6(float) Load 103(inF0)
-            1141:   48(fvec4) VectorTimesScalar 1139 1140
+            1139:    6(float) Load 103(inF0)
+            1140:   48(fvec4) Load 105(inFV0)
+            1141:   48(fvec4) VectorTimesScalar 1140 1139
                               Store 1138(r1) 1141
-            1143:    6(float) Load 103(inF0)
-            1144:   48(fvec4) Load 105(inFV0)
-            1145:   48(fvec4) VectorTimesScalar 1144 1143
+            1143:   48(fvec4) Load 105(inFV0)
+            1144:    6(float) Load 103(inF0)
+            1145:   48(fvec4) VectorTimesScalar 1143 1144
                               Store 1142(r2) 1145
             1147:   48(fvec4) Load 105(inFV0)
             1148:   48(fvec4) Load 106(inFV1)
             1149:    6(float) Dot 1147 1148
                               Store 1146(r3) 1149
-            1151:          76 Load 107(inFM0)
-            1152:   48(fvec4) Load 105(inFV0)
-            1153:   48(fvec4) MatrixTimesVector 1151 1152
+            1151:   48(fvec4) Load 105(inFV0)
+            1152:          76 Load 107(inFM0)
+            1153:   48(fvec4) VectorTimesMatrix 1151 1152
                               Store 1150(r4) 1153
-            1155:   48(fvec4) Load 105(inFV0)
-            1156:          76 Load 107(inFM0)
-            1157:   48(fvec4) VectorTimesMatrix 1155 1156
+            1155:          76 Load 107(inFM0)
+            1156:   48(fvec4) Load 105(inFV0)
+            1157:   48(fvec4) MatrixTimesVector 1155 1156
                               Store 1154(r5) 1157
-            1159:          76 Load 107(inFM0)
-            1160:    6(float) Load 103(inF0)
-            1161:          76 MatrixTimesScalar 1159 1160
+            1159:    6(float) Load 103(inF0)
+            1160:          76 Load 107(inFM0)
+            1161:          76 MatrixTimesScalar 1160 1159
                               Store 1158(r6) 1161
-            1163:    6(float) Load 103(inF0)
-            1164:          76 Load 107(inFM0)
-            1165:          76 MatrixTimesScalar 1164 1163
+            1163:          76 Load 107(inFM0)
+            1164:    6(float) Load 103(inF0)
+            1165:          76 MatrixTimesScalar 1163 1164
                               Store 1162(r7) 1165
-            1167:          76 Load 107(inFM0)
-            1168:          76 Load 108(inFM1)
+            1167:          76 Load 108(inFM1)
+            1168:          76 Load 107(inFM0)
             1169:          76 MatrixTimesMatrix 1167 1168
                               Store 1166(r8) 1169
                               Return
                               FunctionEnd
-129(TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42;):           2 Function None 119
+129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;):           2 Function None 119
        120(inF0):      7(ptr) FunctionParameter
        121(inF1):      7(ptr) FunctionParameter
       122(inFV2):     25(ptr) FunctionParameter
@@ -4162,25 +4162,25 @@ Shader version: 450
        1226(r14):    112(ptr) Variable Function
        1230(r15):    118(ptr) Variable Function
        1234(r16):    116(ptr) Variable Function
-            1171:    6(float) Load 120(inF0)
-            1172:    6(float) Load 121(inF1)
+            1171:    6(float) Load 121(inF1)
+            1172:    6(float) Load 120(inF0)
             1173:    6(float) FMul 1171 1172
                               Store 1170(r00) 1173
-            1175:   24(fvec2) Load 122(inFV2)
-            1176:    6(float) Load 120(inF0)
-            1177:   24(fvec2) VectorTimesScalar 1175 1176
+            1175:    6(float) Load 120(inF0)
+            1176:   24(fvec2) Load 122(inFV2)
+            1177:   24(fvec2) VectorTimesScalar 1176 1175
                               Store 1174(r01) 1177
-            1179:   36(fvec3) Load 123(inFV3)
-            1180:    6(float) Load 120(inF0)
-            1181:   36(fvec3) VectorTimesScalar 1179 1180
+            1179:    6(float) Load 120(inF0)
+            1180:   36(fvec3) Load 123(inFV3)
+            1181:   36(fvec3) VectorTimesScalar 1180 1179
                               Store 1178(r02) 1181
-            1183:    6(float) Load 120(inF0)
-            1184:   24(fvec2) Load 122(inFV2)
-            1185:   24(fvec2) VectorTimesScalar 1184 1183
+            1183:   24(fvec2) Load 122(inFV2)
+            1184:    6(float) Load 120(inF0)
+            1185:   24(fvec2) VectorTimesScalar 1183 1184
                               Store 1182(r03) 1185
-            1187:    6(float) Load 120(inF0)
-            1188:   36(fvec3) Load 123(inFV3)
-            1189:   36(fvec3) VectorTimesScalar 1188 1187
+            1187:   36(fvec3) Load 123(inFV3)
+            1188:    6(float) Load 120(inF0)
+            1189:   36(fvec3) VectorTimesScalar 1187 1188
                               Store 1186(r04) 1189
             1191:   24(fvec2) Load 122(inFV2)
             1192:   24(fvec2) Load 122(inFV2)
@@ -4190,44 +4190,44 @@ Shader version: 450
             1196:   36(fvec3) Load 123(inFV3)
             1197:    6(float) Dot 1195 1196
                               Store 1194(r06) 1197
-            1199:   24(fvec2) Load 122(inFV2)
-            1200:         111 Load 124(inFM2x3)
-            1201:   36(fvec3) VectorTimesMatrix 1199 1200
+            1199:         111 Load 124(inFM2x3)
+            1200:   24(fvec2) Load 122(inFV2)
+            1201:   36(fvec3) MatrixTimesVector 1199 1200
                               Store 1198(r07) 1201
-            1203:   36(fvec3) Load 123(inFV3)
-            1204:         113 Load 125(inFM3x2)
-            1205:   24(fvec2) VectorTimesMatrix 1203 1204
+            1203:         113 Load 125(inFM3x2)
+            1204:   36(fvec3) Load 123(inFV3)
+            1205:   24(fvec2) MatrixTimesVector 1203 1204
                               Store 1202(r08) 1205
-            1207:         111 Load 124(inFM2x3)
-            1208:   36(fvec3) Load 123(inFV3)
-            1209:   24(fvec2) MatrixTimesVector 1207 1208
+            1207:   36(fvec3) Load 123(inFV3)
+            1208:         111 Load 124(inFM2x3)
+            1209:   24(fvec2) VectorTimesMatrix 1207 1208
                               Store 1206(r09) 1209
-            1211:         113 Load 125(inFM3x2)
-            1212:   24(fvec2) Load 122(inFV2)
-            1213:   36(fvec3) MatrixTimesVector 1211 1212
+            1211:   24(fvec2) Load 122(inFV2)
+            1212:         113 Load 125(inFM3x2)
+            1213:   36(fvec3) VectorTimesMatrix 1211 1212
                               Store 1210(r10) 1213
-            1215:         111 Load 124(inFM2x3)
-            1216:    6(float) Load 120(inF0)
-            1217:         111 MatrixTimesScalar 1215 1216
+            1215:    6(float) Load 120(inF0)
+            1216:         111 Load 124(inFM2x3)
+            1217:         111 MatrixTimesScalar 1216 1215
                               Store 1214(r11) 1217
-            1219:         113 Load 125(inFM3x2)
-            1220:    6(float) Load 120(inF0)
-            1221:         113 MatrixTimesScalar 1219 1220
+            1219:    6(float) Load 120(inF0)
+            1220:         113 Load 125(inFM3x2)
+            1221:         113 MatrixTimesScalar 1220 1219
                               Store 1218(r12) 1221
-            1223:         111 Load 124(inFM2x3)
-            1224:         113 Load 125(inFM3x2)
+            1223:         113 Load 125(inFM3x2)
+            1224:         111 Load 124(inFM2x3)
             1225:          60 MatrixTimesMatrix 1223 1224
                               Store 1222(r13) 1225
-            1227:         111 Load 124(inFM2x3)
-            1228:          68 Load 126(inFM3x3)
+            1227:          68 Load 126(inFM3x3)
+            1228:         111 Load 124(inFM2x3)
             1229:         111 MatrixTimesMatrix 1227 1228
                               Store 1226(r14) 1229
-            1231:         111 Load 124(inFM2x3)
-            1232:         115 Load 127(inFM3x4)
+            1231:         115 Load 127(inFM3x4)
+            1232:         111 Load 124(inFM2x3)
             1233:         117 MatrixTimesMatrix 1231 1232
                               Store 1230(r15) 1233
-            1235:         113 Load 125(inFM3x2)
-            1236:         117 Load 128(inFM2x4)
+            1235:         117 Load 128(inFM2x4)
+            1236:         113 Load 125(inFM3x2)
             1237:         115 MatrixTimesMatrix 1235 1236
                               Store 1234(r16) 1237
                               Return
index 20fdcc9..2d63460 100755 (executable)
@@ -17,9 +17,9 @@ gl_FragCoord origin is upper left
 0:?   Linker Objects
 0:?     'f1' (global 1-component vector of float)
 0:?     'fmat11' (global 1X1 matrix of float)
-0:?     'fmat41' (global 1X4 matrix of float)
-0:?     'fmat12' (global 2X1 matrix of float)
-0:?     'dmat23' (global 3X2 matrix of double)
+0:?     'fmat41' (global 4X1 matrix of float)
+0:?     'fmat12' (global 1X2 matrix of float)
+0:?     'dmat23' (global 2X3 matrix of double)
 0:?     'int44' (global 4X4 matrix of int)
 
 
@@ -44,9 +44,9 @@ gl_FragCoord origin is upper left
 0:?   Linker Objects
 0:?     'f1' (global 1-component vector of float)
 0:?     'fmat11' (global 1X1 matrix of float)
-0:?     'fmat41' (global 1X4 matrix of float)
-0:?     'fmat12' (global 2X1 matrix of float)
-0:?     'dmat23' (global 3X2 matrix of double)
+0:?     'fmat41' (global 4X1 matrix of float)
+0:?     'fmat12' (global 1X2 matrix of float)
+0:?     'dmat23' (global 2X3 matrix of double)
 0:?     'int44' (global 4X4 matrix of int)
 
 // Module Version 10000
@@ -65,7 +65,7 @@ gl_FragCoord origin is upper left
                               Name 10  "inScalar"
                               Name 14  "f1"
                               Name 22  "fmat11"
-                              Name 26  "fmat41"
+                              Name 25  "fmat41"
                               Name 29  "fmat12"
                               Name 34  "dmat23"
                               Name 39  "int44"
@@ -81,16 +81,16 @@ gl_FragCoord origin is upper left
               20:             TypeMatrix 19(fvec) 1
               21:             TypePointer Private 20
       22(fmat11):     21(ptr) Variable Private
-              23:             TypeVector 6(float) 4
-              24:             TypeMatrix 23(fvec4) 1
-              25:             TypePointer Private 24
-      26(fmat41):     25(ptr) Variable Private
-              27:             TypeMatrix 19(fvec) 2
+              23:             TypeMatrix 19(fvec) 4
+              24:             TypePointer Private 23
+      25(fmat41):     24(ptr) Variable Private
+              26:             TypeVector 6(float) 2
+              27:             TypeMatrix 26(fvec2) 1
               28:             TypePointer Private 27
       29(fmat12):     28(ptr) Variable Private
               30:             TypeFloat 64
-              31:             TypeVector 30(float) 2
-              32:             TypeMatrix 31(fvec2) 3
+              31:             TypeVector 30(float) 3
+              32:             TypeMatrix 31(fvec3) 2
               33:             TypePointer Private 32
       34(dmat23):     33(ptr) Variable Private
               35:             TypeInt 32 1
diff --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out
new file mode 100644 (file)
index 0000000..8524fe6
--- /dev/null
@@ -0,0 +1,369 @@
+hlsl.matrixindex.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10  Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:10    Function Parameters: 
+0:?     Sequence
+0:22      Sequence
+0:22        move second child to first child (temp float)
+0:22          'e1_00' (temp float)
+0:22          Constant:
+0:22            10.000000
+0:23      Sequence
+0:23        move second child to first child (temp float)
+0:23          'e1_01' (temp float)
+0:23          Constant:
+0:23            11.000000
+0:24      Sequence
+0:24        move second child to first child (temp float)
+0:24          'e1_10' (temp float)
+0:24          Constant:
+0:24            12.000000
+0:25      Sequence
+0:25        move second child to first child (temp float)
+0:25          'e1_11' (temp float)
+0:25          Constant:
+0:25            13.000000
+0:26      Sequence
+0:26        move second child to first child (temp float)
+0:26          'e1_20' (temp float)
+0:26          Constant:
+0:26            14.000000
+0:27      Sequence
+0:27        move second child to first child (temp float)
+0:27          'e1_21' (temp float)
+0:27          Constant:
+0:27            15.000000
+0:29      Sequence
+0:29        move second child to first child (temp float)
+0:29          'e2_00' (temp float)
+0:29          Constant:
+0:29            20.000000
+0:30      Sequence
+0:30        move second child to first child (temp float)
+0:30          'e2_01' (temp float)
+0:30          Constant:
+0:30            21.000000
+0:31      Sequence
+0:31        move second child to first child (temp float)
+0:31          'e2_10' (temp float)
+0:31          Constant:
+0:31            22.000000
+0:32      Sequence
+0:32        move second child to first child (temp float)
+0:32          'e2_11' (temp float)
+0:32          Constant:
+0:32            23.000000
+0:33      Sequence
+0:33        move second child to first child (temp float)
+0:33          'e2_20' (temp float)
+0:33          Constant:
+0:33            24.000000
+0:34      Sequence
+0:34        move second child to first child (temp float)
+0:34          'e2_21' (temp float)
+0:34          Constant:
+0:34            25.000000
+0:39      Sequence
+0:39        move second child to first child (temp 2-component vector of float)
+0:39          'r0a' (temp 2-component vector of float)
+0:39          Constant:
+0:39            10.000000
+0:39            11.000000
+0:40      Sequence
+0:40        move second child to first child (temp 2-component vector of float)
+0:40          'r1a' (temp 2-component vector of float)
+0:40          Constant:
+0:40            12.000000
+0:40            13.000000
+0:41      Sequence
+0:41        move second child to first child (temp 2-component vector of float)
+0:41          'r2a' (temp 2-component vector of float)
+0:41          Constant:
+0:41            14.000000
+0:41            15.000000
+0:43      Sequence
+0:43        move second child to first child (temp 2-component vector of float)
+0:43          'r0b' (temp 2-component vector of float)
+0:43          indirect index (temp 2-component vector of float)
+0:43            Constant:
+0:43              20.000000
+0:43              21.000000
+0:43              22.000000
+0:43              23.000000
+0:43              24.000000
+0:43              25.000000
+0:43            'idx' (uniform int)
+0:44      Sequence
+0:44        move second child to first child (temp 2-component vector of float)
+0:44          'r0c' (temp 2-component vector of float)
+0:44          indirect index (temp 2-component vector of float)
+0:44            'um' (uniform 3X2 matrix of float)
+0:44            'idx' (uniform int)
+0:47      move second child to first child (temp 4-component vector of float)
+0:47        Color: direct index for structure (temp 4-component vector of float)
+0:47          'psout' (temp structure{temp 4-component vector of float Color})
+0:47          Constant:
+0:47            0 (const int)
+0:47        Construct vec4 (temp 4-component vector of float)
+0:47          'e2_11' (temp float)
+0:48      Sequence
+0:48        move second child to first child (temp structure{temp 4-component vector of float Color})
+0:?           '@entryPointOutput' (layout(location=0 ) out structure{temp 4-component vector of float Color})
+0:48          'psout' (temp structure{temp 4-component vector of float Color})
+0:48        Branch: Return
+0:?   Linker Objects
+0:?     'idx' (uniform int)
+0:?     'um' (uniform 3X2 matrix of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10  Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:10    Function Parameters: 
+0:?     Sequence
+0:22      Sequence
+0:22        move second child to first child (temp float)
+0:22          'e1_00' (temp float)
+0:22          Constant:
+0:22            10.000000
+0:23      Sequence
+0:23        move second child to first child (temp float)
+0:23          'e1_01' (temp float)
+0:23          Constant:
+0:23            11.000000
+0:24      Sequence
+0:24        move second child to first child (temp float)
+0:24          'e1_10' (temp float)
+0:24          Constant:
+0:24            12.000000
+0:25      Sequence
+0:25        move second child to first child (temp float)
+0:25          'e1_11' (temp float)
+0:25          Constant:
+0:25            13.000000
+0:26      Sequence
+0:26        move second child to first child (temp float)
+0:26          'e1_20' (temp float)
+0:26          Constant:
+0:26            14.000000
+0:27      Sequence
+0:27        move second child to first child (temp float)
+0:27          'e1_21' (temp float)
+0:27          Constant:
+0:27            15.000000
+0:29      Sequence
+0:29        move second child to first child (temp float)
+0:29          'e2_00' (temp float)
+0:29          Constant:
+0:29            20.000000
+0:30      Sequence
+0:30        move second child to first child (temp float)
+0:30          'e2_01' (temp float)
+0:30          Constant:
+0:30            21.000000
+0:31      Sequence
+0:31        move second child to first child (temp float)
+0:31          'e2_10' (temp float)
+0:31          Constant:
+0:31            22.000000
+0:32      Sequence
+0:32        move second child to first child (temp float)
+0:32          'e2_11' (temp float)
+0:32          Constant:
+0:32            23.000000
+0:33      Sequence
+0:33        move second child to first child (temp float)
+0:33          'e2_20' (temp float)
+0:33          Constant:
+0:33            24.000000
+0:34      Sequence
+0:34        move second child to first child (temp float)
+0:34          'e2_21' (temp float)
+0:34          Constant:
+0:34            25.000000
+0:39      Sequence
+0:39        move second child to first child (temp 2-component vector of float)
+0:39          'r0a' (temp 2-component vector of float)
+0:39          Constant:
+0:39            10.000000
+0:39            11.000000
+0:40      Sequence
+0:40        move second child to first child (temp 2-component vector of float)
+0:40          'r1a' (temp 2-component vector of float)
+0:40          Constant:
+0:40            12.000000
+0:40            13.000000
+0:41      Sequence
+0:41        move second child to first child (temp 2-component vector of float)
+0:41          'r2a' (temp 2-component vector of float)
+0:41          Constant:
+0:41            14.000000
+0:41            15.000000
+0:43      Sequence
+0:43        move second child to first child (temp 2-component vector of float)
+0:43          'r0b' (temp 2-component vector of float)
+0:43          indirect index (temp 2-component vector of float)
+0:43            Constant:
+0:43              20.000000
+0:43              21.000000
+0:43              22.000000
+0:43              23.000000
+0:43              24.000000
+0:43              25.000000
+0:43            'idx' (uniform int)
+0:44      Sequence
+0:44        move second child to first child (temp 2-component vector of float)
+0:44          'r0c' (temp 2-component vector of float)
+0:44          indirect index (temp 2-component vector of float)
+0:44            'um' (uniform 3X2 matrix of float)
+0:44            'idx' (uniform int)
+0:47      move second child to first child (temp 4-component vector of float)
+0:47        Color: direct index for structure (temp 4-component vector of float)
+0:47          'psout' (temp structure{temp 4-component vector of float Color})
+0:47          Constant:
+0:47            0 (const int)
+0:47        Construct vec4 (temp 4-component vector of float)
+0:47          'e2_11' (temp float)
+0:48      Sequence
+0:48        move second child to first child (temp structure{temp 4-component vector of float Color})
+0:?           '@entryPointOutput' (layout(location=0 ) out structure{temp 4-component vector of float Color})
+0:48          'psout' (temp structure{temp 4-component vector of float Color})
+0:48        Branch: Return
+0:?   Linker Objects
+0:?     'idx' (uniform int)
+0:?     'um' (uniform 3X2 matrix of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 74
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 71
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 8  "e1_00"
+                              Name 10  "e1_01"
+                              Name 12  "e1_10"
+                              Name 14  "e1_11"
+                              Name 16  "e1_20"
+                              Name 18  "e1_21"
+                              Name 20  "e2_00"
+                              Name 22  "e2_01"
+                              Name 24  "e2_10"
+                              Name 26  "e2_11"
+                              Name 28  "e2_20"
+                              Name 30  "e2_21"
+                              Name 34  "r0a"
+                              Name 36  "r1a"
+                              Name 38  "r2a"
+                              Name 40  "r0b"
+                              Name 48  "idx"
+                              Name 51  "indexable"
+                              Name 54  "r0c"
+                              Name 56  "um"
+                              Name 62  "PS_OUTPUT"
+                              MemberName 62(PS_OUTPUT) 0  "Color"
+                              Name 64  "psout"
+                              Name 71  "@entryPointOutput"
+                              Decorate 71(@entryPointOutput) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+               9:    6(float) Constant 1092616192
+              11:    6(float) Constant 1093664768
+              13:    6(float) Constant 1094713344
+              15:    6(float) Constant 1095761920
+              17:    6(float) Constant 1096810496
+              19:    6(float) Constant 1097859072
+              21:    6(float) Constant 1101004800
+              23:    6(float) Constant 1101529088
+              25:    6(float) Constant 1102053376
+              27:    6(float) Constant 1102577664
+              29:    6(float) Constant 1103101952
+              31:    6(float) Constant 1103626240
+              32:             TypeVector 6(float) 2
+              33:             TypePointer Function 32(fvec2)
+              35:   32(fvec2) ConstantComposite 9 11
+              37:   32(fvec2) ConstantComposite 13 15
+              39:   32(fvec2) ConstantComposite 17 19
+              41:             TypeMatrix 32(fvec2) 3
+              42:   32(fvec2) ConstantComposite 21 23
+              43:   32(fvec2) ConstantComposite 25 27
+              44:   32(fvec2) ConstantComposite 29 31
+              45:          41 ConstantComposite 42 43 44
+              46:             TypeInt 32 1
+              47:             TypePointer UniformConstant 46(int)
+         48(idx):     47(ptr) Variable UniformConstant
+              50:             TypePointer Function 41
+              55:             TypePointer UniformConstant 41
+          56(um):     55(ptr) Variable UniformConstant
+              58:             TypePointer UniformConstant 32(fvec2)
+              61:             TypeVector 6(float) 4
+   62(PS_OUTPUT):             TypeStruct 61(fvec4)
+              63:             TypePointer Function 62(PS_OUTPUT)
+              65:     46(int) Constant 0
+              68:             TypePointer Function 61(fvec4)
+              70:             TypePointer Output 62(PS_OUTPUT)
+71(@entryPointOutput):     70(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+        8(e1_00):      7(ptr) Variable Function
+       10(e1_01):      7(ptr) Variable Function
+       12(e1_10):      7(ptr) Variable Function
+       14(e1_11):      7(ptr) Variable Function
+       16(e1_20):      7(ptr) Variable Function
+       18(e1_21):      7(ptr) Variable Function
+       20(e2_00):      7(ptr) Variable Function
+       22(e2_01):      7(ptr) Variable Function
+       24(e2_10):      7(ptr) Variable Function
+       26(e2_11):      7(ptr) Variable Function
+       28(e2_20):      7(ptr) Variable Function
+       30(e2_21):      7(ptr) Variable Function
+         34(r0a):     33(ptr) Variable Function
+         36(r1a):     33(ptr) Variable Function
+         38(r2a):     33(ptr) Variable Function
+         40(r0b):     33(ptr) Variable Function
+   51(indexable):     50(ptr) Variable Function
+         54(r0c):     33(ptr) Variable Function
+       64(psout):     63(ptr) Variable Function
+                              Store 8(e1_00) 9
+                              Store 10(e1_01) 11
+                              Store 12(e1_10) 13
+                              Store 14(e1_11) 15
+                              Store 16(e1_20) 17
+                              Store 18(e1_21) 19
+                              Store 20(e2_00) 21
+                              Store 22(e2_01) 23
+                              Store 24(e2_10) 25
+                              Store 26(e2_11) 27
+                              Store 28(e2_20) 29
+                              Store 30(e2_21) 31
+                              Store 34(r0a) 35
+                              Store 36(r1a) 37
+                              Store 38(r2a) 39
+              49:     46(int) Load 48(idx)
+                              Store 51(indexable) 45
+              52:     33(ptr) AccessChain 51(indexable) 49
+              53:   32(fvec2) Load 52
+                              Store 40(r0b) 53
+              57:     46(int) Load 48(idx)
+              59:     58(ptr) AccessChain 56(um) 57
+              60:   32(fvec2) Load 59
+                              Store 54(r0c) 60
+              66:    6(float) Load 26(e2_11)
+              67:   61(fvec4) CompositeConstruct 66 66 66 66
+              69:     68(ptr) AccessChain 64(psout) 65
+                              Store 69 67
+              72:62(PS_OUTPUT) Load 64(psout)
+                              Store 71(@entryPointOutput) 72
+                              Return
+                              FunctionEnd
index 1cbd292..76de891 100644 (file)
@@ -192,8 +192,8 @@ gl_FragCoord origin is upper left
 0:?             14.000000
 0:?             15.000000
 0:35      Sequence
-0:35        move second child to first child (temp 3X2 matrix of float)
-0:35          'r61' (temp 3X2 matrix of float)
+0:35        move second child to first child (temp 2X3 matrix of float)
+0:35          'r61' (temp 2X3 matrix of float)
 0:?           Constant:
 0:?             1.000000
 0:?             2.000000
@@ -202,8 +202,8 @@ gl_FragCoord origin is upper left
 0:?             5.000000
 0:?             6.000000
 0:36      Sequence
-0:36        move second child to first child (temp 2X3 matrix of float)
-0:36          'r62' (temp 2X3 matrix of float)
+0:36        move second child to first child (temp 3X2 matrix of float)
+0:36          'r62' (temp 3X2 matrix of float)
 0:?           Constant:
 0:?             1.000000
 0:?             2.000000
@@ -212,8 +212,8 @@ gl_FragCoord origin is upper left
 0:?             5.000000
 0:?             6.000000
 0:39      Sequence
-0:39        move second child to first child (temp 2X4 matrix of float)
-0:39          'r65' (temp 2X4 matrix of float)
+0:39        move second child to first child (temp 4X2 matrix of float)
+0:39          'r65' (temp 4X2 matrix of float)
 0:?           Constant:
 0:?             1.000000
 0:?             2.000000
@@ -224,8 +224,8 @@ gl_FragCoord origin is upper left
 0:?             7.000000
 0:?             8.000000
 0:40      Sequence
-0:40        move second child to first child (temp 3X4 matrix of float)
-0:40          'r66' (temp 3X4 matrix of float)
+0:40        move second child to first child (temp 4X3 matrix of float)
+0:40          'r66' (temp 4X3 matrix of float)
 0:?           Constant:
 0:?             1.000000
 0:?             2.000000
@@ -444,8 +444,8 @@ gl_FragCoord origin is upper left
 0:?             14.000000
 0:?             15.000000
 0:35      Sequence
-0:35        move second child to first child (temp 3X2 matrix of float)
-0:35          'r61' (temp 3X2 matrix of float)
+0:35        move second child to first child (temp 2X3 matrix of float)
+0:35          'r61' (temp 2X3 matrix of float)
 0:?           Constant:
 0:?             1.000000
 0:?             2.000000
@@ -454,8 +454,8 @@ gl_FragCoord origin is upper left
 0:?             5.000000
 0:?             6.000000
 0:36      Sequence
-0:36        move second child to first child (temp 2X3 matrix of float)
-0:36          'r62' (temp 2X3 matrix of float)
+0:36        move second child to first child (temp 3X2 matrix of float)
+0:36          'r62' (temp 3X2 matrix of float)
 0:?           Constant:
 0:?             1.000000
 0:?             2.000000
@@ -464,8 +464,8 @@ gl_FragCoord origin is upper left
 0:?             5.000000
 0:?             6.000000
 0:39      Sequence
-0:39        move second child to first child (temp 2X4 matrix of float)
-0:39          'r65' (temp 2X4 matrix of float)
+0:39        move second child to first child (temp 4X2 matrix of float)
+0:39          'r65' (temp 4X2 matrix of float)
 0:?           Constant:
 0:?             1.000000
 0:?             2.000000
@@ -476,8 +476,8 @@ gl_FragCoord origin is upper left
 0:?             7.000000
 0:?             8.000000
 0:40      Sequence
-0:40        move second child to first child (temp 3X4 matrix of float)
-0:40          'r66' (temp 3X4 matrix of float)
+0:40        move second child to first child (temp 4X3 matrix of float)
+0:40          'r66' (temp 4X3 matrix of float)
 0:?           Constant:
 0:?             1.000000
 0:?             2.000000
@@ -501,13 +501,13 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 147
+// Id's are bound by 148
 
                               Capability Shader
                               Capability Float64
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 145
+                              EntryPoint Fragment 4  "PixelShaderFunction" 146
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "PixelShaderFunction"
                               Name 9  "r00"
@@ -535,11 +535,11 @@ gl_FragCoord origin is upper left
                               Name 105  "r50"
                               Name 122  "r51"
                               Name 125  "r61"
-                              Name 131  "r62"
+                              Name 130  "r62"
                               Name 136  "r65"
                               Name 141  "r66"
-                              Name 145  "@entryPointOutput"
-                              Decorate 145(@entryPointOutput) Location 0
+                              Name 146  "@entryPointOutput"
+                              Decorate 146(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -635,25 +635,26 @@ gl_FragCoord origin is upper left
              119:    6(float) Constant 1097859072
              120:    7(fvec4) ConstantComposite 116 117 118 119
              121:         103 ConstantComposite 107 110 115 120
-             123:             TypeMatrix 46(fvec2) 3
+             123:             TypeMatrix 69(fvec3) 2
              124:             TypePointer Function 123
-             126:   46(fvec2) ConstantComposite 12 13
-             127:   46(fvec2) ConstantComposite 16 108
-             128:         123 ConstantComposite 49 126 127
-             129:             TypeMatrix 69(fvec3) 2
-             130:             TypePointer Function 129
-             132:   69(fvec3) ConstantComposite 13 16 108
-             133:         129 ConstantComposite 72 132
-             134:             TypeMatrix 7(fvec4) 2
+             126:   69(fvec3) ConstantComposite 13 16 108
+             127:         123 ConstantComposite 72 126
+             128:             TypeMatrix 46(fvec2) 3
+             129:             TypePointer Function 128
+             131:   46(fvec2) ConstantComposite 12 13
+             132:   46(fvec2) ConstantComposite 16 108
+             133:         128 ConstantComposite 49 131 132
+             134:             TypeMatrix 46(fvec2) 4
              135:             TypePointer Function 134
-             137:    7(fvec4) ConstantComposite 16 108 109 111
-             138:         134 ConstantComposite 14 137
-             139:             TypeMatrix 7(fvec4) 3
+             137:   46(fvec2) ConstantComposite 109 111
+             138:         134 ConstantComposite 49 131 132 137
+             139:             TypeMatrix 69(fvec3) 4
              140:             TypePointer Function 139
-             142:    7(fvec4) ConstantComposite 112 113 114 116
-             143:         139 ConstantComposite 14 137 142
-             144:             TypePointer Output 6(float)
-145(@entryPointOutput):    144(ptr) Variable Output
+             142:   69(fvec3) ConstantComposite 109 111 112
+             143:   69(fvec3) ConstantComposite 113 114 116
+             144:         139 ConstantComposite 72 126 142 143
+             145:             TypePointer Output 6(float)
+146(@entryPointOutput):    145(ptr) Variable Output
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
           9(r00):      8(ptr) Variable Function
@@ -681,7 +682,7 @@ gl_FragCoord origin is upper left
         105(r50):    104(ptr) Variable Function
         122(r51):    104(ptr) Variable Function
         125(r61):    124(ptr) Variable Function
-        131(r62):    130(ptr) Variable Function
+        130(r62):    129(ptr) Variable Function
         136(r65):    135(ptr) Variable Function
         141(r66):    140(ptr) Variable Function
                               Store 9(r00) 14
@@ -708,10 +709,10 @@ gl_FragCoord origin is upper left
                               Store 100(r44) 102
                               Store 105(r50) 121
                               Store 122(r51) 121
-                              Store 125(r61) 128
-                              Store 131(r62) 133
+                              Store 125(r61) 127
+                              Store 130(r62) 133
                               Store 136(r65) 138
-                              Store 141(r66) 143
-                              Store 145(@entryPointOutput) 106
+                              Store 141(r66) 144
+                              Store 146(@entryPointOutput) 106
                               Return
                               FunctionEnd
index 1878c64..741f709 100644 (file)
@@ -5,7 +5,7 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 144
+// Id's are bound by 145
 
                               Capability Shader
                               Capability Float64
@@ -39,7 +39,7 @@ Linked fragment stage:
                               Name 105  "r50"
                               Name 122  "r51"
                               Name 125  "r61"
-                              Name 131  "r62"
+                              Name 130  "r62"
                               Name 136  "r65"
                               Name 141  "r66"
                2:             TypeVoid
@@ -137,23 +137,24 @@ Linked fragment stage:
              119:    6(float) Constant 1097859072
              120:    7(fvec4) ConstantComposite 116 117 118 119
              121:         103 ConstantComposite 107 110 115 120
-             123:             TypeMatrix 46(fvec2) 3
+             123:             TypeMatrix 69(fvec3) 2
              124:             TypePointer Function 123
-             126:   46(fvec2) ConstantComposite 12 13
-             127:   46(fvec2) ConstantComposite 16 108
-             128:         123 ConstantComposite 49 126 127
-             129:             TypeMatrix 69(fvec3) 2
-             130:             TypePointer Function 129
-             132:   69(fvec3) ConstantComposite 13 16 108
-             133:         129 ConstantComposite 72 132
-             134:             TypeMatrix 7(fvec4) 2
+             126:   69(fvec3) ConstantComposite 13 16 108
+             127:         123 ConstantComposite 72 126
+             128:             TypeMatrix 46(fvec2) 3
+             129:             TypePointer Function 128
+             131:   46(fvec2) ConstantComposite 12 13
+             132:   46(fvec2) ConstantComposite 16 108
+             133:         128 ConstantComposite 49 131 132
+             134:             TypeMatrix 46(fvec2) 4
              135:             TypePointer Function 134
-             137:    7(fvec4) ConstantComposite 16 108 109 111
-             138:         134 ConstantComposite 14 137
-             139:             TypeMatrix 7(fvec4) 3
+             137:   46(fvec2) ConstantComposite 109 111
+             138:         134 ConstantComposite 49 131 132 137
+             139:             TypeMatrix 69(fvec3) 4
              140:             TypePointer Function 139
-             142:    7(fvec4) ConstantComposite 112 113 114 116
-             143:         139 ConstantComposite 14 137 142
+             142:   69(fvec3) ConstantComposite 109 111 112
+             143:   69(fvec3) ConstantComposite 113 114 116
+             144:         139 ConstantComposite 72 126 142 143
          4(main):           2 Function None 3
                5:             Label
           9(r00):      8(ptr) Variable Function
@@ -181,7 +182,7 @@ Linked fragment stage:
         105(r50):    104(ptr) Variable Function
         122(r51):    104(ptr) Variable Function
         125(r61):    124(ptr) Variable Function
-        131(r62):    130(ptr) Variable Function
+        130(r62):    129(ptr) Variable Function
         136(r65):    135(ptr) Variable Function
         141(r66):    140(ptr) Variable Function
                               Store 9(r00) 14
@@ -208,9 +209,9 @@ Linked fragment stage:
                               Store 100(r44) 102
                               Store 105(r50) 121
                               Store 122(r51) 121
-                              Store 125(r61) 128
-                              Store 131(r62) 133
+                              Store 125(r61) 127
+                              Store 130(r62) 133
                               Store 136(r65) 138
-                              Store 141(r66) 143
+                              Store 141(r66) 144
                               ReturnValue 106
                               FunctionEnd
index b55c242..c04acae 100644 (file)
@@ -482,3 +482,12 @@ void TestGenMulNxM(float inF0, float inF1,
     float2x4 r15 = mul(inFM2x3, inFM3x4);
     float3x4 r16 = mul(inFM3x2, inFM2x4);
 }
+
+struct PS_OUTPUT { float4 color : SV_Target0; };
+
+PS_OUTPUT main()
+{
+    PS_OUTPUT ps_output;
+    ps_output.color = 1.0;
+    return ps_output;
+};
diff --git a/Test/hlsl.matrixindex.frag b/Test/hlsl.matrixindex.frag
new file mode 100644 (file)
index 0000000..f352c0e
--- /dev/null
@@ -0,0 +1,49 @@
+uniform int      idx;
+uniform float3x2 um;
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+};
+
+PS_OUTPUT main()
+{
+    // matrices of 3 rows, 2 columns (regardless of row vs col major storage)
+    const float3x2 m1 = { { 10, 11 },  // row-wise initialization
+                          { 12, 13 },
+                          { 14, 15 } }; 
+
+    const float3x2 m2 = { 20, 21, 22, 23, 24, 25 };  // component-wise matrix initialization is allowed
+    const float3x2 m3 = { 30, 31, 33, 33, 34, 35 };  // component-wise matrix initialization is allowed
+
+    // These can be observed in the AST post-const folding to ensure we obtain the right value,
+    // as given in comments to the right of each line.  Note that the first indirection into a
+    // matrix returns a row vector.
+    float e1_00 = m1[0][0]; // 10
+    float e1_01 = m1[0][1]; // 11
+    float e1_10 = m1[1][0]; // 12
+    float e1_11 = m1[1][1]; // 13
+    float e1_20 = m1[2][0]; // 14
+    float e1_21 = m1[2][1]; // 15
+
+    float e2_00 = m2[0][0]; // 20
+    float e2_01 = m2[0][1]; // 21
+    float e2_10 = m2[1][0]; // 22
+    float e2_11 = m2[1][1]; // 23
+    float e2_20 = m2[2][0]; // 24
+    float e2_21 = m2[2][1]; // 25
+
+    // float e3a_00 = m3._m00; // TODO... also as an lvalue for a non-const matrix
+    // float e3b_00 = m3._11;  // TODO... also as an lvalue for a non-const matrix
+
+    float2 r0a = m1[0];  // row0: 10,11: types must match: constant index into constant
+    float2 r1a = m1[1];  // row1: 12,13: ...
+    float2 r2a = m1[2];  // row2: 14,15: ...
+
+    float2 r0b = m2[idx]; // types should match: variable index into constant
+    float2 r0c = um[idx]; // types should match: variable index into variable
+
+    PS_OUTPUT psout;
+    psout.Color = e2_11; // 23
+    return psout;
+}
index 0ebc17e..5b42092 100644 (file)
@@ -110,7 +110,7 @@ INSTANTIATE_TEST_CASE_P(
         {"hlsl.intrinsics.evalfns.frag", "main"},
         {"hlsl.intrinsics.double.frag", "PixelShaderFunction"},
         {"hlsl.intrinsics.f1632.frag", "PixelShaderFunction"},
-        {"hlsl.intrinsics.frag", "PixelShaderFunction"},
+        {"hlsl.intrinsics.frag", "main"},
         {"hlsl.intrinsics.lit.frag", "PixelShaderFunction"},
         {"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"},
         {"hlsl.intrinsics.negative.frag", "PixelShaderFunction"},
@@ -124,6 +124,7 @@ INSTANTIATE_TEST_CASE_P(
         {"hlsl.load.offset.dx10.frag", "main"},
         {"hlsl.load.offsetarray.dx10.frag", "main"},
         {"hlsl.multiEntry.vert", "RealEntrypoint"},
+        {"hlsl.matrixindex.frag", "main"},
         {"hlsl.numericsuffixes.frag", "main"},
         {"hlsl.overload.frag", "PixelShaderFunction"},
         {"hlsl.pp.line.frag", "main"},
index e94d6eb..bad6034 100755 (executable)
@@ -711,8 +711,8 @@ bool HlslGrammar::acceptMatrixTemplateType(TType& type)
         return false;
 
     new(&type) TType(basicType, EvqTemporary, 0,
-                     cols->getAsConstantUnion()->getConstArray()[0].getIConst(),
-                     rows->getAsConstantUnion()->getConstArray()[0].getIConst());
+                     rows->getAsConstantUnion()->getConstArray()[0].getIConst(),
+                     cols->getAsConstantUnion()->getConstArray()[0].getIConst());
 
     if (!acceptTokenClass(EHTokRightAngle)) {
         expected("right angle bracket");
@@ -1031,46 +1031,46 @@ bool HlslGrammar::acceptType(TType& type)
         new(&type) TType(EbtInt, EvqTemporary, 0, 1, 1);
         break;
     case EHTokInt1x2:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 2, 1);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 1, 2);
         break;
     case EHTokInt1x3:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 3, 1);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 1, 3);
         break;
     case EHTokInt1x4:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 4, 1);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 1, 4);
         break;
     case EHTokInt2x1:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 1, 2);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 2, 1);
         break;
     case EHTokInt2x2:
         new(&type) TType(EbtInt, EvqTemporary, 0, 2, 2);
         break;
     case EHTokInt2x3:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 3, 2);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 2, 3);
         break;
     case EHTokInt2x4:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 4, 2);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 2, 4);
         break;
     case EHTokInt3x1:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 1, 3);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 3, 1);
         break;
     case EHTokInt3x2:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 2, 3);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 3, 2);
         break;
     case EHTokInt3x3:
         new(&type) TType(EbtInt, EvqTemporary, 0, 3, 3);
         break;
     case EHTokInt3x4:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 4, 3);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 3, 4);
         break;
     case EHTokInt4x1:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 1, 4);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 4, 1);
         break;
     case EHTokInt4x2:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 2, 4);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 4, 2);
         break;
     case EHTokInt4x3:
-        new(&type) TType(EbtInt, EvqTemporary, 0, 3, 4);
+        new(&type) TType(EbtInt, EvqTemporary, 0, 4, 3);
         break;
     case EHTokInt4x4:
         new(&type) TType(EbtInt, EvqTemporary, 0, 4, 4);
@@ -1080,46 +1080,46 @@ bool HlslGrammar::acceptType(TType& type)
         new(&type) TType(EbtUint, EvqTemporary, 0, 1, 1);
         break;
     case EHTokUint1x2:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 2, 1);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 1, 2);
         break;
     case EHTokUint1x3:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 3, 1);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 1, 3);
         break;
     case EHTokUint1x4:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 4, 1);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 1, 4);
         break;
     case EHTokUint2x1:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 1, 2);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 2, 1);
         break;
     case EHTokUint2x2:
         new(&type) TType(EbtUint, EvqTemporary, 0, 2, 2);
         break;
     case EHTokUint2x3:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 3, 2);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 2, 3);
         break;
     case EHTokUint2x4:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 4, 2);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 2, 4);
         break;
     case EHTokUint3x1:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 1, 3);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 3, 1);
         break;
     case EHTokUint3x2:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 2, 3);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 3, 2);
         break;
     case EHTokUint3x3:
         new(&type) TType(EbtUint, EvqTemporary, 0, 3, 3);
         break;
     case EHTokUint3x4:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 4, 3);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 3, 4);
         break;
     case EHTokUint4x1:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 1, 4);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 4, 1);
         break;
     case EHTokUint4x2:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 2, 4);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 4, 2);
         break;
     case EHTokUint4x3:
-        new(&type) TType(EbtUint, EvqTemporary, 0, 3, 4);
+        new(&type) TType(EbtUint, EvqTemporary, 0, 4, 3);
         break;
     case EHTokUint4x4:
         new(&type) TType(EbtUint, EvqTemporary, 0, 4, 4);
@@ -1129,46 +1129,46 @@ bool HlslGrammar::acceptType(TType& type)
         new(&type) TType(EbtBool, EvqTemporary, 0, 1, 1);
         break;
     case EHTokBool1x2:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 2, 1);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 1, 2);
         break;
     case EHTokBool1x3:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 3, 1);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 1, 3);
         break;
     case EHTokBool1x4:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 4, 1);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 1, 4);
         break;
     case EHTokBool2x1:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 1, 2);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 2, 1);
         break;
     case EHTokBool2x2:
         new(&type) TType(EbtBool, EvqTemporary, 0, 2, 2);
         break;
     case EHTokBool2x3:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 3, 2);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 2, 3);
         break;
     case EHTokBool2x4:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 4, 2);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 2, 4);
         break;
     case EHTokBool3x1:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 1, 3);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 3, 1);
         break;
     case EHTokBool3x2:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 2, 3);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 3, 2);
         break;
     case EHTokBool3x3:
         new(&type) TType(EbtBool, EvqTemporary, 0, 3, 3);
         break;
     case EHTokBool3x4:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 4, 3);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 3, 4);
         break;
     case EHTokBool4x1:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 1, 4);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 4, 1);
         break;
     case EHTokBool4x2:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 2, 4);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 4, 2);
         break;
     case EHTokBool4x3:
-        new(&type) TType(EbtBool, EvqTemporary, 0, 3, 4);
+        new(&type) TType(EbtBool, EvqTemporary, 0, 4, 3);
         break;
     case EHTokBool4x4:
         new(&type) TType(EbtBool, EvqTemporary, 0, 4, 4);
@@ -1178,46 +1178,46 @@ bool HlslGrammar::acceptType(TType& type)
         new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 1);
         break;
     case EHTokFloat1x2:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 1);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 2);
         break;
     case EHTokFloat1x3:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 1);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 3);
         break;
     case EHTokFloat1x4:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 1);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 4);
         break;
     case EHTokFloat2x1:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 2);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 1);
         break;
     case EHTokFloat2x2:
         new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 2);
         break;
     case EHTokFloat2x3:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 2);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 3);
         break;
     case EHTokFloat2x4:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 2);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 4);
         break;
     case EHTokFloat3x1:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 3);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 1);
         break;
     case EHTokFloat3x2:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 3);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 2);
         break;
     case EHTokFloat3x3:
         new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 3);
         break;
     case EHTokFloat3x4:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 3);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 4);
         break;
     case EHTokFloat4x1:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 4);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 1);
         break;
     case EHTokFloat4x2:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 4);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 2);
         break;
     case EHTokFloat4x3:
-        new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 4);
+        new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 3);
         break;
     case EHTokFloat4x4:
         new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 4);
@@ -1227,46 +1227,46 @@ bool HlslGrammar::acceptType(TType& type)
         new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 1);
         break;
     case EHTokDouble1x2:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 1);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 2);
         break;
     case EHTokDouble1x3:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 1);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 3);
         break;
     case EHTokDouble1x4:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 1);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 4);
         break;
     case EHTokDouble2x1:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 2);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 1);
         break;
     case EHTokDouble2x2:
         new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 2);
         break;
     case EHTokDouble2x3:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 2);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 3);
         break;
     case EHTokDouble2x4:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 2);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 4);
         break;
     case EHTokDouble3x1:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 3);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 1);
         break;
     case EHTokDouble3x2:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 3);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 2);
         break;
     case EHTokDouble3x3:
         new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 3);
         break;
     case EHTokDouble3x4:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 3);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 4);
         break;
     case EHTokDouble4x1:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 4);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 1);
         break;
     case EHTokDouble4x2:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 4);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 2);
         break;
     case EHTokDouble4x3:
-        new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 4);
+        new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 3);
         break;
     case EHTokDouble4x4:
         new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 4);
index 282fabd..37c2ae7 100755 (executable)
@@ -1597,8 +1597,10 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
     case EOpGenMul:
         {
             // mul(a,b) -> MatrixTimesMatrix, MatrixTimesVector, MatrixTimesScalar, VectorTimesScalar, Dot, Mul
-            TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped();
-            TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped();
+            // Since we are treating HLSL rows like GLSL columns (the first matrix indirection),
+            // we must reverse the operand order here.  Hence, arg0 gets sequence[1], etc.
+            TIntermTyped* arg0 = argAggregate->getSequence()[1]->getAsTyped();
+            TIntermTyped* arg1 = argAggregate->getSequence()[0]->getAsTyped();
 
             if (arg0->isVector() && arg1->isVector()) {  // vec * vec
                 node->getAsAggregate()->setOperator(EOpDot);
@@ -4144,15 +4146,21 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co
                 return nullptr;
         }
     } else if (type.isMatrix()) {
-        if (type.getMatrixCols() != (int)initList->getSequence().size()) {
-            error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str());
-            return nullptr;
-        }
-        TType vectorType(type, 0); // dereferenced type
-        for (int i = 0; i < type.getMatrixCols(); ++i) {
-            initList->getSequence()[i] = convertInitializerList(loc, vectorType, initList->getSequence()[i]->getAsTyped());
-            if (initList->getSequence()[i] == nullptr)
+        if (type.computeNumComponents() == (int)initList->getSequence().size()) {
+            // This means the matrix is initialized component-wise, rather than as
+            // a series of rows and columns.  We can just use the list directly as
+            // a constructor; no further processing needed.
+        } else {
+            if (type.getMatrixCols() != (int)initList->getSequence().size()) {
+                error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str());
                 return nullptr;
+            }
+            TType vectorType(type, 0); // dereferenced type
+            for (int i = 0; i < type.getMatrixCols(); ++i) {
+                initList->getSequence()[i] = convertInitializerList(loc, vectorType, initList->getSequence()[i]->getAsTyped());
+                if (initList->getSequence()[i] == nullptr)
+                    return nullptr;
+            }
         }
     } else if (type.isVector()) {
         if (type.getVectorSize() != (int)initList->getSequence().size()) {
index 868a41e..3f72599 100755 (executable)
@@ -218,7 +218,6 @@ int FixedVecSize(const char* arg)
 glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, const char* argType, int dim0, int dim1)
 {
     const bool isTranspose = (argOrder[0] == '^');
-    const bool isMatMul    = (argOrder[0] == '#');
     const bool isTexture   = IsTextureType(argOrder[0]);
     const bool isArrayed   = IsTextureArrayed(argOrder[0]);
     const bool isSampler   = IsSamplerType(argType[0]);
@@ -229,8 +228,6 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
 
     if (isTranspose) {  // Take transpose of matrix dimensions
         std::swap(dim0, dim1); 
-    } else if (isMatMul) {
-        dim0 = dim1;    // set vector dimension to mat col
     } else if (isTexture) {
         if (type == 'F')       // map base type to texture of that type.
             type = 'T';        // e.g, int -> itexture, uint -> utexture, etc.
@@ -240,7 +237,7 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
             type = 'u';
     }
 
-    if (isTranspose || isMatMul)
+    if (isTranspose)
         ++argOrder;
 
     char order = *argOrder;
@@ -312,16 +309,14 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
         switch (order) {
         case '-': break;  // no dimensions for voids
         case 'S': break;  // no dimensions on scalars
-        case 'V': s += ('0' + char(dim0)); break;
+        case 'V':
+            s += ('0' + char(dim0));
+            break;
         case 'M': 
-            {
-                if (!UseHlslTypes)  // GLSL has column first for mat types
-                    std::swap(dim0, dim1);
-                s += ('0' + char(dim0));
-                s += 'x';
-                s += ('0' + char(dim1));
-                break;
-            }
+            s += ('0' + char(dim0));
+            s += 'x';
+            s += ('0' + char(dim1));
+            break;
         default:
             break;
         }
@@ -427,6 +422,7 @@ void TBuiltInParseablesHlsl::createMatTimesMat()
                 const int retRows = xRows;
                 const int retCols = yCols;
 
+                // Create a mat * mat of the appropriate dimensions
                 AppendTypeName(s, "M", "F", retRows, retCols);  // add return type
                 s.append(" ");                                  // space between type and name
                 s.append("mul");                                // intrinsic name
@@ -438,6 +434,31 @@ void TBuiltInParseablesHlsl::createMatTimesMat()
 
                 s.append(");\n");                               // close paren
             }
+
+            // Create M*V
+            AppendTypeName(s, "V", "F", xRows, 1);          // add return type
+            s.append(" ");                                  // space between type and name
+            s.append("mul");                                // intrinsic name
+            s.append("(");                                  // open paren
+
+            AppendTypeName(s, "M", "F", xRows, xCols);      // add X input
+            s.append(", ");
+            AppendTypeName(s, "V", "F", xCols, 1);          // add Y input
+
+            s.append(");\n");                               // close paren
+
+
+            // Create V*M
+            AppendTypeName(s, "V", "F", xCols, 1);          // add return type
+            s.append(" ");                                  // space between type and name
+            s.append("mul");                                // intrinsic name
+            s.append("(");                                  // open paren
+
+            AppendTypeName(s, "V", "F", xRows, 1);          // add Y input
+            s.append(", ");
+            AppendTypeName(s, "M", "F", xRows, xCols);      // add X input
+
+            s.append(");\n");                               // close paren
         }
     }
 }
@@ -482,7 +503,6 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
     // '>' as first letter of order creates an output parameter
     // '<' as first letter of order creates an input parameter
     // '^' as first letter of order takes transpose dimensions
-    // '#' as first letter of order sets rows=cols for mats
     // '%' as first letter of order creates texture of given F/I/U type (texture, itexture, etc)
     // '@' as first letter of order creates arrayed texture of given type
     // '$' / '&' as first letter of order creates 2DMS / 2DMSArray textures
@@ -592,9 +612,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
         { "mul",                              "M",     nullptr,   "S,M",            "FI,",           EShLangAll },
         { "mul",                              "V",     nullptr,   "V,S",            "FI,",           EShLangAll },
         { "mul",                              "S",     nullptr,   "V,V",            "FI,",           EShLangAll },
-        { "mul",                              "#V",    nullptr,   "V,M",            "FI,",           EShLangAll },
         { "mul",                              "M",     nullptr,   "M,S",            "FI,",           EShLangAll },
-        { "mul",                              "V",     nullptr,   "M,#V",           "FI,",           EShLangAll },
         // mat*mat form of mul is handled in createMatTimesMat()
         { "noise",                            "S",     "F",       "V",              "F",             EShLangPS },
         { "normalize",                        nullptr, nullptr,   "V",              "F",             EShLangAll },