HLSL: add intrinsic function implicit promotions
authorsteve-lunarg <steve_gh@khasekhemwy.net>
Wed, 2 Nov 2016 18:42:34 +0000 (12:42 -0600)
committersteve-lunarg <steve_gh@khasekhemwy.net>
Wed, 23 Nov 2016 17:36:34 +0000 (10:36 -0700)
This PR handles implicit promotions for intrinsics when there is no exact match,
such as for example clamp(int, bool, float).  In this case the int and bool will
be promoted to a float, and the clamp(float, float, float) form used.

These promotions can be mixed with shape conversions, e.g, clamp(int, bool2, float2).

Output conversions are handled either via the existing addOutputArgumentConversion
function, which this PR generalizes to handle either aggregates or unaries, or by
intrinsic decomposition.  If there are methods or intrinsics to be decomposed,
then decomposition is responsible for any output conversions, which turns out to
happen automatically in all current cases.  This can be revisited once inout
conversions are in place.

Some cases of actual ambiguity were fixed in several tests, e.g, spv.register.autoassign.*

Some intrinsics with only uint versions were expanded to signed ints natively, where the
underlying AST and SPIR-V supports that.  E.g, countbits.  This avoids extraneous
conversion nodes.

A new function promoteAggregate is added, and used by findFunction.  This is essentially
a generalization of the "promote 1st or 2nd arg" algorithm in promoteBinary.

The actual selection proceeds in three steps, as described in the comments in
hlslParseContext::findFunction:

1. Attempt an exact match.  If found, use it.
2. If not, obtain the operator from step 1, and promote arguments.
3. Re-select the intrinsic overload from the results of step 2.

19 files changed:
Test/baseResults/hlsl.intrinsics.frag.out
Test/baseResults/hlsl.intrinsics.promote.down.frag.out [new file with mode: 0644]
Test/baseResults/hlsl.intrinsics.promote.frag.out [new file with mode: 0644]
Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out [new file with mode: 0644]
Test/baseResults/hlsl.intrinsics.vert.out
Test/baseResults/spv.register.autoassign-2.frag.out
Test/hlsl.intrinsics.frag
Test/hlsl.intrinsics.promote.down.frag [new file with mode: 0644]
Test/hlsl.intrinsics.promote.frag [new file with mode: 0644]
Test/hlsl.intrinsics.promote.outputs.frag [new file with mode: 0644]
Test/spv.register.autoassign-2.frag
Test/spv.register.autoassign.rangetest.frag
glslang/MachineIndependent/Intermediate.cpp
glslang/MachineIndependent/linkValidate.cpp
glslang/MachineIndependent/localintermediate.h
gtests/Hlsl.FromFile.cpp
hlsl/hlslParseHelper.cpp
hlsl/hlslParseHelper.h
hlsl/hlslParseables.cpp

index 8a1935e..5def966 100644 (file)
@@ -92,11 +92,11 @@ gl_FragCoord origin is upper left
 0:35          hyp. cosine (temp float)
 0:35            'inF0' (in float)
 0:36      Sequence
-0:36        move second child to first child (temp uint)
-0:36          'r016' (temp uint)
-0:36          bitCount (temp uint)
+0:36        move second child to first child (temp int)
+0:36          'r016' (temp int)
+0:36          bitCount (temp int)
 0:36            Constant:
-0:36              7 (const uint)
+0:36              7 (const int)
 0:37      Sequence
 0:37        move second child to first child (temp float)
 0:37          'r017' (temp float)
@@ -257,9 +257,10 @@ gl_FragCoord origin is upper left
 0:69      Sequence
 0:69        move second child to first child (temp uint)
 0:69          'r048' (temp uint)
-0:69          bitFieldReverse (temp uint)
-0:69            Constant:
-0:69              2 (const uint)
+0:69          Convert int to uint (temp uint)
+0:69            bitFieldReverse (temp int)
+0:69              Constant:
+0:69                2 (const int)
 0:70      Sequence
 0:70        move second child to first child (temp float)
 0:70          'r049' (temp float)
@@ -440,12 +441,12 @@ gl_FragCoord origin is upper left
 0:113          hyp. cosine (temp 2-component vector of float)
 0:113            'inF0' (in 2-component vector of float)
 0:114      Sequence
-0:114        move second child to first child (temp 2-component vector of uint)
-0:114          'r016' (temp 2-component vector of uint)
-0:?           bitCount (temp 2-component vector of uint)
+0:114        move second child to first child (temp 2-component vector of int)
+0:114          'r016' (temp 2-component vector of int)
+0:?           bitCount (temp 2-component vector of int)
 0:?             Constant:
-0:?               7 (const uint)
-0:?               3 (const uint)
+0:?               7 (const int)
+0:?               3 (const int)
 0:115      Sequence
 0:115        move second child to first child (temp 2-component vector of float)
 0:115          'r017' (temp 2-component vector of float)
@@ -2893,11 +2894,11 @@ gl_FragCoord origin is upper left
 0:35          hyp. cosine (temp float)
 0:35            'inF0' (in float)
 0:36      Sequence
-0:36        move second child to first child (temp uint)
-0:36          'r016' (temp uint)
-0:36          bitCount (temp uint)
+0:36        move second child to first child (temp int)
+0:36          'r016' (temp int)
+0:36          bitCount (temp int)
 0:36            Constant:
-0:36              7 (const uint)
+0:36              7 (const int)
 0:37      Sequence
 0:37        move second child to first child (temp float)
 0:37          'r017' (temp float)
@@ -3058,9 +3059,10 @@ gl_FragCoord origin is upper left
 0:69      Sequence
 0:69        move second child to first child (temp uint)
 0:69          'r048' (temp uint)
-0:69          bitFieldReverse (temp uint)
-0:69            Constant:
-0:69              2 (const uint)
+0:69          Convert int to uint (temp uint)
+0:69            bitFieldReverse (temp int)
+0:69              Constant:
+0:69                2 (const int)
 0:70      Sequence
 0:70        move second child to first child (temp float)
 0:70          'r049' (temp float)
@@ -3241,12 +3243,12 @@ gl_FragCoord origin is upper left
 0:113          hyp. cosine (temp 2-component vector of float)
 0:113            'inF0' (in 2-component vector of float)
 0:114      Sequence
-0:114        move second child to first child (temp 2-component vector of uint)
-0:114          'r016' (temp 2-component vector of uint)
-0:?           bitCount (temp 2-component vector of uint)
+0:114        move second child to first child (temp 2-component vector of int)
+0:114          'r016' (temp 2-component vector of int)
+0:?           bitCount (temp 2-component vector of int)
 0:?             Constant:
-0:?               7 (const uint)
-0:?               3 (const uint)
+0:?               7 (const int)
+0:?               3 (const int)
 0:115      Sequence
 0:115        move second child to first child (temp 2-component vector of float)
 0:115          'r017' (temp 2-component vector of float)
@@ -5599,13 +5601,13 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 1825
+// Id's are bound by 1828
 
                               Capability Shader
                               Capability DerivativeControl
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 1805
+                              EntryPoint Fragment 4  "main" 1808
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 16  "PixelShaderFunctionS(f1;f1;f1;u1;u1;"
@@ -5704,26 +5706,26 @@ gl_FragCoord origin is upper left
                               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 219  "r030"
+                              Name 222  "r031"
+                              Name 225  "r033"
+                              Name 229  "r034"
+                              Name 232  "r035"
+                              Name 234  "ResType"
+                              Name 238  "r036"
+                              Name 241  "r037"
+                              Name 244  "r038"
+                              Name 247  "r039"
+                              Name 251  "r039a"
+                              Name 256  "r040"
+                              Name 259  "r041"
+                              Name 264  "r042"
+                              Name 267  "r043"
+                              Name 271  "r044"
+                              Name 275  "r045"
+                              Name 279  "r046"
+                              Name 282  "r047"
+                              Name 286  "r048"
                               Name 290  "r049"
                               Name 293  "r050"
                               Name 296  "r051"
@@ -5764,375 +5766,375 @@ gl_FragCoord origin is upper left
                               Name 428  "r029"
                               Name 431  "r030"
                               Name 436  "r031"
-                              Name 440  "r032"
-                              Name 442  "r033"
-                              Name 445  "r035"
-                              Name 449  "r036"
-                              Name 452  "r037"
-                              Name 454  "ResType"
-                              Name 458  "r038"
-                              Name 462  "r039"
-                              Name 465  "r040"
-                              Name 468  "r041"
-                              Name 472  "r039a"
-                              Name 477  "r042"
-                              Name 480  "r043"
-                              Name 483  "r044"
-                              Name 487  "r045"
-                              Name 490  "r046"
-                              Name 494  "r047"
-                              Name 498  "r048"
-                              Name 501  "r049"
-                              Name 505  "r050"
-                              Name 508  "r051"
-                              Name 512  "r052"
-                              Name 516  "r053"
-                              Name 521  "r054"
-                              Name 525  "r055"
-                              Name 528  "r056"
-                              Name 531  "r057"
-                              Name 536  "r058"
-                              Name 539  "r059"
-                              Name 546  "r060"
-                              Name 549  "r061"
-                              Name 554  "r062"
-                              Name 557  "r063"
-                              Name 561  "r064"
-                              Name 564  "r065"
-                              Name 567  "r066"
-                              Name 573  "r000"
-                              Name 576  "r001"
-                              Name 579  "r002"
-                              Name 582  "r003"
-                              Name 585  "r004"
-                              Name 590  "r005"
-                              Name 593  "r006"
-                              Name 596  "r007"
-                              Name 599  "r009"
-                              Name 602  "r010"
-                              Name 606  "r011"
-                              Name 609  "r012"
-                              Name 622  "r013"
-                              Name 625  "r014"
-                              Name 628  "r015"
-                              Name 632  "r016"
-                              Name 636  "r017"
-                              Name 639  "r018"
-                              Name 642  "r019"
-                              Name 645  "r020"
-                              Name 648  "r021"
-                              Name 651  "r022"
-                              Name 654  "r023"
-                              Name 657  "r024"
-                              Name 661  "r025"
-                              Name 665  "r029"
-                              Name 668  "r030"
-                              Name 671  "r031"
-                              Name 676  "r032"
-                              Name 680  "r033"
-                              Name 682  "r034"
-                              Name 685  "r036"
-                              Name 689  "r037"
-                              Name 692  "r038"
-                              Name 694  "ResType"
-                              Name 698  "r039"
-                              Name 702  "r040"
-                              Name 705  "r041"
-                              Name 708  "r042"
-                              Name 712  "r039a"
-                              Name 717  "r039b"
-                              Name 723  "r043"
-                              Name 726  "r044"
-                              Name 729  "r045"
-                              Name 733  "r046"
-                              Name 736  "r047"
-                              Name 740  "r048"
-                              Name 744  "r049"
-                              Name 747  "r050"
-                              Name 751  "r051"
-                              Name 754  "r052"
-                              Name 758  "r053"
-                              Name 762  "r054"
-                              Name 766  "r055"
-                              Name 769  "r056"
-                              Name 772  "r057"
-                              Name 775  "r058"
-                              Name 780  "r059"
-                              Name 783  "r060"
-                              Name 790  "r061"
-                              Name 793  "r062"
-                              Name 798  "r063"
-                              Name 801  "r064"
-                              Name 805  "r065"
-                              Name 808  "r066"
-                              Name 811  "r067"
-                              Name 818  "r000"
-                              Name 821  "r001"
-                              Name 824  "r002"
-                              Name 827  "r003"
-                              Name 830  "r004"
-                              Name 835  "r005"
-                              Name 838  "r006"
-                              Name 841  "r007"
-                              Name 844  "r009"
-                              Name 847  "r010"
-                              Name 851  "r011"
-                              Name 854  "r012"
-                              Name 867  "r013"
-                              Name 870  "r014"
-                              Name 873  "r015"
-                              Name 876  "r016"
-                              Name 879  "r017"
-                              Name 882  "r018"
-                              Name 885  "r019"
-                              Name 888  "r020"
-                              Name 891  "r021"
-                              Name 894  "r022"
-                              Name 897  "r023"
-                              Name 901  "r024"
-                              Name 905  "r025"
-                              Name 916  "r029"
-                              Name 919  "r030"
-                              Name 922  "r031"
-                              Name 927  "r032"
-                              Name 932  "r033"
-                              Name 934  "r034"
-                              Name 937  "r036"
-                              Name 941  "r037"
-                              Name 944  "r038"
-                              Name 946  "ResType"
-                              Name 950  "r039"
-                              Name 954  "r040"
-                              Name 957  "r041"
-                              Name 960  "r042"
-                              Name 964  "r039a"
-                              Name 969  "r043"
-                              Name 972  "r044"
-                              Name 975  "r045"
-                              Name 979  "r046"
-                              Name 982  "r047"
-                              Name 986  "r048"
-                              Name 990  "r049"
-                              Name 993  "r050"
-                              Name 997  "r051"
-                              Name 1000  "r052"
-                              Name 1004  "r053"
-                              Name 1008  "r054"
-                              Name 1012  "r055"
-                              Name 1015  "r056"
-                              Name 1018  "r057"
-                              Name 1021  "r058"
-                              Name 1026  "r059"
-                              Name 1029  "r060"
-                              Name 1036  "r061"
-                              Name 1039  "r062"
-                              Name 1044  "r063"
-                              Name 1047  "r064"
-                              Name 1051  "r065"
-                              Name 1054  "r066"
-                              Name 1057  "r067"
-                              Name 1064  "r000"
-                              Name 1067  "r001"
-                              Name 1072  "r003"
-                              Name 1075  "r004"
-                              Name 1078  "r005"
-                              Name 1081  "r006"
-                              Name 1085  "r007"
-                              Name 1096  "r008"
-                              Name 1101  "r009"
-                              Name 1104  "r010"
-                              Name 1107  "r011"
-                              Name 1110  "r012"
-                              Name 1113  "r013"
-                              Name 1116  "r014"
-                              Name 1119  "r015"
-                              Name 1122  "r016"
-                              Name 1125  "r017"
-                              Name 1128  "r018"
-                              Name 1131  "r019"
-                              Name 1134  "R020"
-                              Name 1137  "r021"
-                              Name 1140  "r022"
-                              Name 1150  "r023"
-                              Name 1153  "r024"
-                              Name 1155  "ResType"
-                              Name 1159  "r025"
-                              Name 1162  "r026"
-                              Name 1166  "r026a"
-                              Name 1171  "r027"
-                              Name 1174  "r028"
-                              Name 1178  "r029"
-                              Name 1181  "r030"
-                              Name 1185  "r031"
-                              Name 1189  "r032"
-                              Name 1193  "r033"
-                              Name 1196  "r034"
-                              Name 1199  "r035"
-                              Name 1202  "r036"
-                              Name 1207  "r037"
-                              Name 1210  "r038"
-                              Name 1217  "r039"
-                              Name 1220  "r049"
-                              Name 1225  "r041"
-                              Name 1228  "r042"
-                              Name 1232  "r043"
-                              Name 1235  "r044"
-                              Name 1240  "r046"
-                              Name 1247  "r000"
-                              Name 1250  "r001"
-                              Name 1255  "r003"
-                              Name 1258  "r004"
-                              Name 1261  "r005"
-                              Name 1264  "r006"
-                              Name 1268  "r007"
-                              Name 1279  "r008"
-                              Name 1284  "r009"
-                              Name 1287  "r010"
-                              Name 1290  "r011"
-                              Name 1293  "r012"
-                              Name 1296  "r013"
-                              Name 1299  "r014"
-                              Name 1302  "r015"
-                              Name 1305  "r016"
-                              Name 1308  "r017"
-                              Name 1311  "r018"
-                              Name 1314  "r019"
-                              Name 1317  "R020"
-                              Name 1320  "r021"
-                              Name 1323  "r022"
-                              Name 1336  "r023"
-                              Name 1339  "r024"
-                              Name 1341  "ResType"
-                              Name 1345  "r025"
-                              Name 1348  "r026"
-                              Name 1352  "r026a"
-                              Name 1357  "r027"
-                              Name 1360  "r028"
-                              Name 1364  "r029"
-                              Name 1367  "r030"
-                              Name 1371  "r031"
-                              Name 1375  "r032"
-                              Name 1379  "r033"
-                              Name 1382  "r034"
-                              Name 1385  "r035"
-                              Name 1388  "r036"
-                              Name 1393  "r037"
-                              Name 1396  "r038"
-                              Name 1403  "r039"
-                              Name 1406  "r049"
-                              Name 1411  "r041"
-                              Name 1414  "r042"
-                              Name 1418  "r043"
-                              Name 1421  "r044"
-                              Name 1426  "r046"
-                              Name 1433  "r000"
-                              Name 1436  "r001"
-                              Name 1441  "r003"
-                              Name 1444  "r004"
-                              Name 1447  "r005"
-                              Name 1450  "r006"
-                              Name 1454  "r007"
-                              Name 1465  "r008"
-                              Name 1470  "r009"
-                              Name 1473  "r010"
-                              Name 1476  "r011"
-                              Name 1479  "r012"
-                              Name 1482  "r013"
-                              Name 1485  "r014"
-                              Name 1488  "r015"
-                              Name 1491  "r016"
-                              Name 1494  "r017"
-                              Name 1497  "r018"
-                              Name 1500  "r019"
-                              Name 1503  "R020"
-                              Name 1506  "r021"
-                              Name 1509  "r022"
-                              Name 1525  "r023"
-                              Name 1528  "r024"
-                              Name 1530  "ResType"
-                              Name 1534  "r025"
-                              Name 1537  "r026"
-                              Name 1541  "r026a"
-                              Name 1546  "r027"
-                              Name 1549  "r028"
-                              Name 1553  "r029"
-                              Name 1556  "r030"
-                              Name 1560  "r031"
-                              Name 1564  "r032"
-                              Name 1568  "r033"
-                              Name 1571  "r034"
-                              Name 1574  "r035"
-                              Name 1577  "r036"
-                              Name 1582  "r037"
-                              Name 1585  "r038"
-                              Name 1592  "r039"
-                              Name 1595  "r049"
-                              Name 1600  "r041"
-                              Name 1603  "r042"
-                              Name 1607  "r043"
-                              Name 1610  "r044"
-                              Name 1615  "r046"
-                              Name 1622  "r0"
-                              Name 1626  "r1"
-                              Name 1630  "r2"
-                              Name 1634  "r3"
-                              Name 1638  "r4"
-                              Name 1642  "r5"
-                              Name 1646  "r6"
-                              Name 1650  "r7"
-                              Name 1654  "r8"
-                              Name 1658  "r0"
-                              Name 1662  "r1"
-                              Name 1666  "r2"
-                              Name 1670  "r3"
-                              Name 1674  "r4"
-                              Name 1678  "r5"
-                              Name 1682  "r6"
-                              Name 1686  "r7"
-                              Name 1690  "r8"
-                              Name 1694  "r0"
-                              Name 1698  "r1"
-                              Name 1702  "r2"
-                              Name 1706  "r3"
-                              Name 1710  "r4"
-                              Name 1714  "r5"
-                              Name 1718  "r6"
-                              Name 1722  "r7"
-                              Name 1726  "r8"
-                              Name 1730  "r00"
-                              Name 1734  "r01"
-                              Name 1738  "r02"
-                              Name 1742  "r03"
-                              Name 1746  "r04"
-                              Name 1750  "r05"
-                              Name 1754  "r06"
-                              Name 1758  "r07"
-                              Name 1762  "r08"
-                              Name 1766  "r09"
-                              Name 1770  "r10"
-                              Name 1774  "r11"
-                              Name 1778  "r12"
-                              Name 1782  "r13"
-                              Name 1786  "r14"
-                              Name 1790  "r15"
-                              Name 1794  "r16"
-                              Name 1798  "PS_OUTPUT"
-                              MemberName 1798(PS_OUTPUT) 0  "color"
-                              Name 1800  "ps_output"
-                              Name 1805  "color"
-                              Name 1810  "gs_ua"
-                              Name 1811  "gs_ub"
-                              Name 1812  "gs_uc"
-                              Name 1814  "gs_ua2"
-                              Name 1815  "gs_ub2"
-                              Name 1816  "gs_uc2"
-                              Name 1818  "gs_ua3"
-                              Name 1819  "gs_ub3"
-                              Name 1820  "gs_uc3"
-                              Name 1822  "gs_ua4"
-                              Name 1823  "gs_ub4"
-                              Name 1824  "gs_uc4"
-                              Decorate 1805(color) Location 0
+                              Name 441  "r032"
+                              Name 443  "r033"
+                              Name 446  "r035"
+                              Name 450  "r036"
+                              Name 453  "r037"
+                              Name 455  "ResType"
+                              Name 459  "r038"
+                              Name 463  "r039"
+                              Name 466  "r040"
+                              Name 469  "r041"
+                              Name 473  "r039a"
+                              Name 478  "r042"
+                              Name 481  "r043"
+                              Name 484  "r044"
+                              Name 488  "r045"
+                              Name 491  "r046"
+                              Name 495  "r047"
+                              Name 499  "r048"
+                              Name 502  "r049"
+                              Name 506  "r050"
+                              Name 509  "r051"
+                              Name 513  "r052"
+                              Name 517  "r053"
+                              Name 522  "r054"
+                              Name 527  "r055"
+                              Name 530  "r056"
+                              Name 533  "r057"
+                              Name 538  "r058"
+                              Name 541  "r059"
+                              Name 548  "r060"
+                              Name 551  "r061"
+                              Name 556  "r062"
+                              Name 559  "r063"
+                              Name 563  "r064"
+                              Name 566  "r065"
+                              Name 569  "r066"
+                              Name 575  "r000"
+                              Name 578  "r001"
+                              Name 581  "r002"
+                              Name 584  "r003"
+                              Name 587  "r004"
+                              Name 592  "r005"
+                              Name 595  "r006"
+                              Name 598  "r007"
+                              Name 601  "r009"
+                              Name 604  "r010"
+                              Name 608  "r011"
+                              Name 611  "r012"
+                              Name 624  "r013"
+                              Name 627  "r014"
+                              Name 630  "r015"
+                              Name 635  "r016"
+                              Name 639  "r017"
+                              Name 642  "r018"
+                              Name 645  "r019"
+                              Name 648  "r020"
+                              Name 651  "r021"
+                              Name 654  "r022"
+                              Name 657  "r023"
+                              Name 660  "r024"
+                              Name 664  "r025"
+                              Name 668  "r029"
+                              Name 671  "r030"
+                              Name 674  "r031"
+                              Name 679  "r032"
+                              Name 683  "r033"
+                              Name 685  "r034"
+                              Name 688  "r036"
+                              Name 692  "r037"
+                              Name 695  "r038"
+                              Name 697  "ResType"
+                              Name 701  "r039"
+                              Name 705  "r040"
+                              Name 708  "r041"
+                              Name 711  "r042"
+                              Name 715  "r039a"
+                              Name 720  "r039b"
+                              Name 726  "r043"
+                              Name 729  "r044"
+                              Name 732  "r045"
+                              Name 736  "r046"
+                              Name 739  "r047"
+                              Name 743  "r048"
+                              Name 747  "r049"
+                              Name 750  "r050"
+                              Name 754  "r051"
+                              Name 757  "r052"
+                              Name 761  "r053"
+                              Name 765  "r054"
+                              Name 769  "r055"
+                              Name 772  "r056"
+                              Name 775  "r057"
+                              Name 778  "r058"
+                              Name 783  "r059"
+                              Name 786  "r060"
+                              Name 793  "r061"
+                              Name 796  "r062"
+                              Name 801  "r063"
+                              Name 804  "r064"
+                              Name 808  "r065"
+                              Name 811  "r066"
+                              Name 814  "r067"
+                              Name 821  "r000"
+                              Name 824  "r001"
+                              Name 827  "r002"
+                              Name 830  "r003"
+                              Name 833  "r004"
+                              Name 838  "r005"
+                              Name 841  "r006"
+                              Name 844  "r007"
+                              Name 847  "r009"
+                              Name 850  "r010"
+                              Name 854  "r011"
+                              Name 857  "r012"
+                              Name 870  "r013"
+                              Name 873  "r014"
+                              Name 876  "r015"
+                              Name 879  "r016"
+                              Name 882  "r017"
+                              Name 885  "r018"
+                              Name 888  "r019"
+                              Name 891  "r020"
+                              Name 894  "r021"
+                              Name 897  "r022"
+                              Name 900  "r023"
+                              Name 904  "r024"
+                              Name 908  "r025"
+                              Name 919  "r029"
+                              Name 922  "r030"
+                              Name 925  "r031"
+                              Name 930  "r032"
+                              Name 935  "r033"
+                              Name 937  "r034"
+                              Name 940  "r036"
+                              Name 944  "r037"
+                              Name 947  "r038"
+                              Name 949  "ResType"
+                              Name 953  "r039"
+                              Name 957  "r040"
+                              Name 960  "r041"
+                              Name 963  "r042"
+                              Name 967  "r039a"
+                              Name 972  "r043"
+                              Name 975  "r044"
+                              Name 978  "r045"
+                              Name 982  "r046"
+                              Name 985  "r047"
+                              Name 989  "r048"
+                              Name 993  "r049"
+                              Name 996  "r050"
+                              Name 1000  "r051"
+                              Name 1003  "r052"
+                              Name 1007  "r053"
+                              Name 1011  "r054"
+                              Name 1015  "r055"
+                              Name 1018  "r056"
+                              Name 1021  "r057"
+                              Name 1024  "r058"
+                              Name 1029  "r059"
+                              Name 1032  "r060"
+                              Name 1039  "r061"
+                              Name 1042  "r062"
+                              Name 1047  "r063"
+                              Name 1050  "r064"
+                              Name 1054  "r065"
+                              Name 1057  "r066"
+                              Name 1060  "r067"
+                              Name 1067  "r000"
+                              Name 1070  "r001"
+                              Name 1075  "r003"
+                              Name 1078  "r004"
+                              Name 1081  "r005"
+                              Name 1084  "r006"
+                              Name 1088  "r007"
+                              Name 1099  "r008"
+                              Name 1104  "r009"
+                              Name 1107  "r010"
+                              Name 1110  "r011"
+                              Name 1113  "r012"
+                              Name 1116  "r013"
+                              Name 1119  "r014"
+                              Name 1122  "r015"
+                              Name 1125  "r016"
+                              Name 1128  "r017"
+                              Name 1131  "r018"
+                              Name 1134  "r019"
+                              Name 1137  "R020"
+                              Name 1140  "r021"
+                              Name 1143  "r022"
+                              Name 1153  "r023"
+                              Name 1156  "r024"
+                              Name 1158  "ResType"
+                              Name 1162  "r025"
+                              Name 1165  "r026"
+                              Name 1169  "r026a"
+                              Name 1174  "r027"
+                              Name 1177  "r028"
+                              Name 1181  "r029"
+                              Name 1184  "r030"
+                              Name 1188  "r031"
+                              Name 1192  "r032"
+                              Name 1196  "r033"
+                              Name 1199  "r034"
+                              Name 1202  "r035"
+                              Name 1205  "r036"
+                              Name 1210  "r037"
+                              Name 1213  "r038"
+                              Name 1220  "r039"
+                              Name 1223  "r049"
+                              Name 1228  "r041"
+                              Name 1231  "r042"
+                              Name 1235  "r043"
+                              Name 1238  "r044"
+                              Name 1243  "r046"
+                              Name 1250  "r000"
+                              Name 1253  "r001"
+                              Name 1258  "r003"
+                              Name 1261  "r004"
+                              Name 1264  "r005"
+                              Name 1267  "r006"
+                              Name 1271  "r007"
+                              Name 1282  "r008"
+                              Name 1287  "r009"
+                              Name 1290  "r010"
+                              Name 1293  "r011"
+                              Name 1296  "r012"
+                              Name 1299  "r013"
+                              Name 1302  "r014"
+                              Name 1305  "r015"
+                              Name 1308  "r016"
+                              Name 1311  "r017"
+                              Name 1314  "r018"
+                              Name 1317  "r019"
+                              Name 1320  "R020"
+                              Name 1323  "r021"
+                              Name 1326  "r022"
+                              Name 1339  "r023"
+                              Name 1342  "r024"
+                              Name 1344  "ResType"
+                              Name 1348  "r025"
+                              Name 1351  "r026"
+                              Name 1355  "r026a"
+                              Name 1360  "r027"
+                              Name 1363  "r028"
+                              Name 1367  "r029"
+                              Name 1370  "r030"
+                              Name 1374  "r031"
+                              Name 1378  "r032"
+                              Name 1382  "r033"
+                              Name 1385  "r034"
+                              Name 1388  "r035"
+                              Name 1391  "r036"
+                              Name 1396  "r037"
+                              Name 1399  "r038"
+                              Name 1406  "r039"
+                              Name 1409  "r049"
+                              Name 1414  "r041"
+                              Name 1417  "r042"
+                              Name 1421  "r043"
+                              Name 1424  "r044"
+                              Name 1429  "r046"
+                              Name 1436  "r000"
+                              Name 1439  "r001"
+                              Name 1444  "r003"
+                              Name 1447  "r004"
+                              Name 1450  "r005"
+                              Name 1453  "r006"
+                              Name 1457  "r007"
+                              Name 1468  "r008"
+                              Name 1473  "r009"
+                              Name 1476  "r010"
+                              Name 1479  "r011"
+                              Name 1482  "r012"
+                              Name 1485  "r013"
+                              Name 1488  "r014"
+                              Name 1491  "r015"
+                              Name 1494  "r016"
+                              Name 1497  "r017"
+                              Name 1500  "r018"
+                              Name 1503  "r019"
+                              Name 1506  "R020"
+                              Name 1509  "r021"
+                              Name 1512  "r022"
+                              Name 1528  "r023"
+                              Name 1531  "r024"
+                              Name 1533  "ResType"
+                              Name 1537  "r025"
+                              Name 1540  "r026"
+                              Name 1544  "r026a"
+                              Name 1549  "r027"
+                              Name 1552  "r028"
+                              Name 1556  "r029"
+                              Name 1559  "r030"
+                              Name 1563  "r031"
+                              Name 1567  "r032"
+                              Name 1571  "r033"
+                              Name 1574  "r034"
+                              Name 1577  "r035"
+                              Name 1580  "r036"
+                              Name 1585  "r037"
+                              Name 1588  "r038"
+                              Name 1595  "r039"
+                              Name 1598  "r049"
+                              Name 1603  "r041"
+                              Name 1606  "r042"
+                              Name 1610  "r043"
+                              Name 1613  "r044"
+                              Name 1618  "r046"
+                              Name 1625  "r0"
+                              Name 1629  "r1"
+                              Name 1633  "r2"
+                              Name 1637  "r3"
+                              Name 1641  "r4"
+                              Name 1645  "r5"
+                              Name 1649  "r6"
+                              Name 1653  "r7"
+                              Name 1657  "r8"
+                              Name 1661  "r0"
+                              Name 1665  "r1"
+                              Name 1669  "r2"
+                              Name 1673  "r3"
+                              Name 1677  "r4"
+                              Name 1681  "r5"
+                              Name 1685  "r6"
+                              Name 1689  "r7"
+                              Name 1693  "r8"
+                              Name 1697  "r0"
+                              Name 1701  "r1"
+                              Name 1705  "r2"
+                              Name 1709  "r3"
+                              Name 1713  "r4"
+                              Name 1717  "r5"
+                              Name 1721  "r6"
+                              Name 1725  "r7"
+                              Name 1729  "r8"
+                              Name 1733  "r00"
+                              Name 1737  "r01"
+                              Name 1741  "r02"
+                              Name 1745  "r03"
+                              Name 1749  "r04"
+                              Name 1753  "r05"
+                              Name 1757  "r06"
+                              Name 1761  "r07"
+                              Name 1765  "r08"
+                              Name 1769  "r09"
+                              Name 1773  "r10"
+                              Name 1777  "r11"
+                              Name 1781  "r12"
+                              Name 1785  "r13"
+                              Name 1789  "r14"
+                              Name 1793  "r15"
+                              Name 1797  "r16"
+                              Name 1801  "PS_OUTPUT"
+                              MemberName 1801(PS_OUTPUT) 0  "color"
+                              Name 1803  "ps_output"
+                              Name 1808  "color"
+                              Name 1813  "gs_ua"
+                              Name 1814  "gs_ub"
+                              Name 1815  "gs_uc"
+                              Name 1817  "gs_ua2"
+                              Name 1818  "gs_ub2"
+                              Name 1819  "gs_uc2"
+                              Name 1821  "gs_ua3"
+                              Name 1822  "gs_ub3"
+                              Name 1823  "gs_uc3"
+                              Name 1825  "gs_ua4"
+                              Name 1826  "gs_ub4"
+                              Name 1827  "gs_uc4"
+                              Decorate 1808(color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -6182,98 +6184,100 @@ gl_FragCoord origin is upper left
              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
+             187:    148(int) Constant 7
+    234(ResType):             TypeStruct 6(float) 148(int)
+             262:    6(float) Constant 1050288283
+             283:    6(float) Constant 1065353216
+             287:    148(int) Constant 2
              352:             TypeVector 148(int) 2
              353:             TypePointer Function 352(ivec2)
              379:   24(fvec2) ConstantComposite 175 175
              380:             TypeVector 131(bool) 2
-             393:      8(int) Constant 3
-             394:   26(ivec2) ConstantComposite 187 393
-             437:      8(int) Constant 8
-             438:   26(ivec2) ConstantComposite 187 437
-    454(ResType):             TypeStruct 24(fvec2) 352(ivec2)
-             461:             TypePointer Function 380(bvec2)
-             519:    6(float) Constant 1073741824
-             522:      8(int) Constant 1
-             523:   26(ivec2) ConstantComposite 522 288
-             570:   24(fvec2) ConstantComposite 284 519
-             588:             TypeVector 148(int) 3
-             589:             TypePointer Function 588(ivec3)
-             615:   36(fvec3) ConstantComposite 175 175 175
-             616:             TypeVector 131(bool) 3
-             629:      8(int) Constant 5
-             630:   38(ivec3) ConstantComposite 187 393 629
-             677:      8(int) Constant 4
-             678:   38(ivec3) ConstantComposite 288 393 677
-    694(ResType):             TypeStruct 36(fvec3) 588(ivec3)
-             701:             TypePointer Function 616(bvec3)
-             720:    6(float) Constant 1050253722
-             767:   38(ivec3) ConstantComposite 522 288 393
-             814:    6(float) Constant 1077936128
-             815:   36(fvec3) ConstantComposite 284 519 814
-             833:             TypeVector 148(int) 4
-             834:             TypePointer Function 833(ivec4)
-             860:   48(fvec4) ConstantComposite 175 175 175 175
-             861:             TypeVector 131(bool) 4
-             874:   50(ivec4) ConstantComposite 187 393 629 288
-             928:      8(int) Constant 9
-             929:      8(int) Constant 10
-             930:   50(ivec4) ConstantComposite 187 437 928 929
-    946(ResType):             TypeStruct 48(fvec4) 833(ivec4)
-             953:             TypePointer Function 861(bvec4)
-            1013:   50(ivec4) ConstantComposite 522 288 393 677
-            1060:    6(float) Constant 1082130432
-            1061:   48(fvec4) ConstantComposite 284 519 814 1060
-            1089:          60 ConstantComposite 379 379
-            1090:             TypeMatrix 380(bvec2) 2
-   1155(ResType):             TypeStruct 60 352(ivec2)
-            1243:   24(fvec2) ConstantComposite 519 519
-            1244:          60 ConstantComposite 1243 1243
-            1272:          68 ConstantComposite 615 615 615
-            1273:             TypeMatrix 616(bvec3) 3
-   1341(ResType):             TypeStruct 68 588(ivec3)
-            1429:   36(fvec3) ConstantComposite 814 814 814
-            1430:          68 ConstantComposite 1429 1429 1429
-            1458:          76 ConstantComposite 860 860 860 860
-            1459:             TypeMatrix 861(bvec4) 4
-   1530(ResType):             TypeStruct 76 833(ivec4)
-            1618:   48(fvec4) ConstantComposite 1060 1060 1060 1060
-            1619:          76 ConstantComposite 1618 1618 1618 1618
- 1798(PS_OUTPUT):             TypeStruct 48(fvec4)
-            1799:             TypePointer Function 1798(PS_OUTPUT)
-            1801:    148(int) Constant 0
-            1802:   48(fvec4) ConstantComposite 284 284 284 284
-            1804:             TypePointer Output 48(fvec4)
-     1805(color):   1804(ptr) Variable Output
-            1809:             TypePointer Workgroup 8(int)
-     1810(gs_ua):   1809(ptr) Variable Workgroup
-     1811(gs_ub):   1809(ptr) Variable Workgroup
-     1812(gs_uc):   1809(ptr) Variable Workgroup
-            1813:             TypePointer Workgroup 26(ivec2)
-    1814(gs_ua2):   1813(ptr) Variable Workgroup
-    1815(gs_ub2):   1813(ptr) Variable Workgroup
-    1816(gs_uc2):   1813(ptr) Variable Workgroup
-            1817:             TypePointer Workgroup 38(ivec3)
-    1818(gs_ua3):   1817(ptr) Variable Workgroup
-    1819(gs_ub3):   1817(ptr) Variable Workgroup
-    1820(gs_uc3):   1817(ptr) Variable Workgroup
-            1821:             TypePointer Workgroup 50(ivec4)
-    1822(gs_ua4):   1821(ptr) Variable Workgroup
-    1823(gs_ub4):   1821(ptr) Variable Workgroup
-    1824(gs_uc4):   1821(ptr) Variable Workgroup
+             393:    148(int) Constant 3
+             394:  352(ivec2) ConstantComposite 187 393
+             437:      8(int) Constant 7
+             438:      8(int) Constant 8
+             439:   26(ivec2) ConstantComposite 437 438
+    455(ResType):             TypeStruct 24(fvec2) 352(ivec2)
+             462:             TypePointer Function 380(bvec2)
+             520:    6(float) Constant 1073741824
+             523:      8(int) Constant 1
+             524:      8(int) Constant 2
+             525:   26(ivec2) ConstantComposite 523 524
+             572:   24(fvec2) ConstantComposite 283 520
+             590:             TypeVector 148(int) 3
+             591:             TypePointer Function 590(ivec3)
+             617:   36(fvec3) ConstantComposite 175 175 175
+             618:             TypeVector 131(bool) 3
+             631:      8(int) Constant 3
+             632:      8(int) Constant 5
+             633:   38(ivec3) ConstantComposite 437 631 632
+             680:      8(int) Constant 4
+             681:   38(ivec3) ConstantComposite 524 631 680
+    697(ResType):             TypeStruct 36(fvec3) 590(ivec3)
+             704:             TypePointer Function 618(bvec3)
+             723:    6(float) Constant 1050253722
+             770:   38(ivec3) ConstantComposite 523 524 631
+             817:    6(float) Constant 1077936128
+             818:   36(fvec3) ConstantComposite 283 520 817
+             836:             TypeVector 148(int) 4
+             837:             TypePointer Function 836(ivec4)
+             863:   48(fvec4) ConstantComposite 175 175 175 175
+             864:             TypeVector 131(bool) 4
+             877:   50(ivec4) ConstantComposite 437 631 632 524
+             931:      8(int) Constant 9
+             932:      8(int) Constant 10
+             933:   50(ivec4) ConstantComposite 437 438 931 932
+    949(ResType):             TypeStruct 48(fvec4) 836(ivec4)
+             956:             TypePointer Function 864(bvec4)
+            1016:   50(ivec4) ConstantComposite 523 524 631 680
+            1063:    6(float) Constant 1082130432
+            1064:   48(fvec4) ConstantComposite 283 520 817 1063
+            1092:          60 ConstantComposite 379 379
+            1093:             TypeMatrix 380(bvec2) 2
+   1158(ResType):             TypeStruct 60 352(ivec2)
+            1246:   24(fvec2) ConstantComposite 520 520
+            1247:          60 ConstantComposite 1246 1246
+            1275:          68 ConstantComposite 617 617 617
+            1276:             TypeMatrix 618(bvec3) 3
+   1344(ResType):             TypeStruct 68 590(ivec3)
+            1432:   36(fvec3) ConstantComposite 817 817 817
+            1433:          68 ConstantComposite 1432 1432 1432
+            1461:          76 ConstantComposite 863 863 863 863
+            1462:             TypeMatrix 864(bvec4) 4
+   1533(ResType):             TypeStruct 76 836(ivec4)
+            1621:   48(fvec4) ConstantComposite 1063 1063 1063 1063
+            1622:          76 ConstantComposite 1621 1621 1621 1621
+ 1801(PS_OUTPUT):             TypeStruct 48(fvec4)
+            1802:             TypePointer Function 1801(PS_OUTPUT)
+            1804:    148(int) Constant 0
+            1805:   48(fvec4) ConstantComposite 283 283 283 283
+            1807:             TypePointer Output 48(fvec4)
+     1808(color):   1807(ptr) Variable Output
+            1812:             TypePointer Workgroup 8(int)
+     1813(gs_ua):   1812(ptr) Variable Workgroup
+     1814(gs_ub):   1812(ptr) Variable Workgroup
+     1815(gs_uc):   1812(ptr) Variable Workgroup
+            1816:             TypePointer Workgroup 26(ivec2)
+    1817(gs_ua2):   1816(ptr) Variable Workgroup
+    1818(gs_ub2):   1816(ptr) Variable Workgroup
+    1819(gs_uc2):   1816(ptr) Variable Workgroup
+            1820:             TypePointer Workgroup 38(ivec3)
+    1821(gs_ua3):   1820(ptr) Variable Workgroup
+    1822(gs_ub3):   1820(ptr) Variable Workgroup
+    1823(gs_uc3):   1820(ptr) Variable Workgroup
+            1824:             TypePointer Workgroup 50(ivec4)
+    1825(gs_ua4):   1824(ptr) Variable Workgroup
+    1826(gs_ub4):   1824(ptr) Variable Workgroup
+    1827(gs_uc4):   1824(ptr) Variable Workgroup
          4(main):           2 Function None 3
                5:             Label
- 1800(ps_output):   1799(ptr) Variable Function
-            1803:     49(ptr) AccessChain 1800(ps_output) 1801
-                              Store 1803 1802
-            1806:     49(ptr) AccessChain 1800(ps_output) 1801
-            1807:   48(fvec4) Load 1806
-                              Store 1805(color) 1807
+ 1803(ps_output):   1802(ptr) Variable Function
+            1806:     49(ptr) AccessChain 1803(ps_output) 1804
+                              Store 1806 1805
+            1809:     49(ptr) AccessChain 1803(ps_output) 1804
+            1810:   48(fvec4) Load 1809
+                              Store 1808(color) 1810
                               Return
                               FunctionEnd
 16(PixelShaderFunctionS(f1;f1;f1;u1;u1;):    6(float) Function None 10
@@ -6297,7 +6301,7 @@ gl_FragCoord origin is upper left
        169(r012):      7(ptr) Variable Function
        180(r014):      7(ptr) Variable Function
        183(r015):      7(ptr) Variable Function
-       186(r016):      9(ptr) Variable Function
+       186(r016):    149(ptr) Variable Function
        189(r017):      7(ptr) Variable Function
        192(r018):      7(ptr) Variable Function
        195(r019):      7(ptr) Variable Function
@@ -6308,25 +6312,25 @@ gl_FragCoord origin is upper left
        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
+       219(r030):      9(ptr) Variable Function
+       222(r031):      7(ptr) Variable Function
+       225(r033):      7(ptr) Variable Function
+       229(r034):      7(ptr) Variable Function
+       232(r035):      7(ptr) Variable Function
+       238(r036):      7(ptr) Variable Function
+       241(r037):    132(ptr) Variable Function
+       244(r038):    132(ptr) Variable Function
+       247(r039):      7(ptr) Variable Function
+      251(r039a):      7(ptr) Variable Function
+       256(r040):      7(ptr) Variable Function
+       259(r041):      7(ptr) Variable Function
+       264(r042):      7(ptr) Variable Function
+       267(r043):      7(ptr) Variable Function
+       271(r044):      7(ptr) Variable Function
+       275(r045):      7(ptr) Variable Function
+       279(r046):      7(ptr) Variable Function
+       282(r047):      7(ptr) Variable Function
+       286(r048):      9(ptr) Variable Function
        290(r049):      7(ptr) Variable Function
        293(r050):      7(ptr) Variable Function
        296(r051):      7(ptr) Variable Function
@@ -6391,7 +6395,7 @@ gl_FragCoord origin is upper left
              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
+             188:    148(int) BitCount 187
                               Store 186(r016) 188
              190:    6(float) Load 11(inF0)
              191:    6(float) DPdx 190
@@ -6420,76 +6424,77 @@ gl_FragCoord origin is upper left
              214:    6(float) Load 11(inF0)
              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)
-             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:   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) 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
+             217:    148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 187
+             218:      8(int) Bitcast 217
+                              Store 216(r029) 218
+             220:    148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 187
+             221:      8(int) Bitcast 220
+                              Store 219(r030) 221
+             223:    6(float) Load 11(inF0)
+             224:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 223
+                              Store 222(r031) 224
+             226:    6(float) Load 11(inF0)
+             227:    6(float) Load 12(inF1)
+             228:    6(float) FMod 226 227
+                              Store 225(r033) 228
+             230:    6(float) Load 11(inF0)
+             231:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 230
+                              Store 229(r034) 231
+             233:    6(float) Load 11(inF0)
+             235:234(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 233
+             236:    148(int) CompositeExtract 235 1
+                              Store 12(inF1) 236
+             237:    6(float) CompositeExtract 235 0
+                              Store 232(r035) 237
+             239:    6(float) Load 11(inF0)
+             240:    6(float) Fwidth 239
+                              Store 238(r036) 240
+             242:    6(float) Load 11(inF0)
+             243:   131(bool) IsInf 242
+                              Store 241(r037) 243
+             245:    6(float) Load 11(inF0)
+             246:   131(bool) IsNan 245
+                              Store 244(r038) 246
+             248:    6(float) Load 11(inF0)
+             249:    6(float) Load 12(inF1)
+             250:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 248 249
+                              Store 247(r039) 250
+             252:    6(float) Load 11(inF0)
+             253:    6(float) Load 12(inF1)
+             254:    6(float) Load 13(inF2)
+             255:    6(float) ExtInst 1(GLSL.std.450) 46(FMix) 252 253 254
+                              Store 251(r039a) 255
+             257:    6(float) Load 11(inF0)
+             258:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 257
+                              Store 256(r040) 258
+             260:    6(float) Load 11(inF0)
+             261:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 260
+             263:    6(float) FMul 261 262
+                              Store 259(r041) 263
+             265:    6(float) Load 11(inF0)
+             266:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 265
+                              Store 264(r042) 266
+             268:    6(float) Load 11(inF0)
+             269:    6(float) Load 12(inF1)
+             270:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 268 269
+                              Store 267(r043) 270
+             272:    6(float) Load 11(inF0)
+             273:    6(float) Load 12(inF1)
+             274:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 272 273
+                              Store 271(r044) 274
+             276:    6(float) Load 11(inF0)
+             277:    6(float) Load 12(inF1)
+             278:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 276 277
+                              Store 275(r045) 278
+             280:    6(float) Load 11(inF0)
+             281:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 280
+                              Store 279(r046) 281
+             284:    6(float) Load 11(inF0)
+             285:    6(float) FDiv 283 284
+                              Store 282(r047) 285
+             288:    148(int) BitReverse 287
+             289:      8(int) Bitcast 288
+                              Store 286(r048) 289
              291:    6(float) Load 11(inF0)
              292:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 291
                               Store 290(r049) 292
@@ -6497,7 +6502,7 @@ gl_FragCoord origin is upper left
              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) 43(FClamp) 297 175 284
+             298:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 297 175 283
                               Store 296(r051) 298
              300:    6(float) Load 11(inF0)
              301:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 300
@@ -6565,7 +6570,7 @@ gl_FragCoord origin is upper left
        373(r012):     25(ptr) Variable Function
        386(r013):     25(ptr) Variable Function
        389(r015):     25(ptr) Variable Function
-       392(r016):     27(ptr) Variable Function
+       392(r016):    353(ptr) Variable Function
        396(r017):     25(ptr) Variable Function
        399(r018):     25(ptr) Variable Function
        402(r019):     25(ptr) Variable Function
@@ -6579,41 +6584,41 @@ gl_FragCoord origin is upper left
        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
+       441(r032):     27(ptr) Variable Function
+       443(r033):     25(ptr) Variable Function
+       446(r035):     25(ptr) Variable Function
+       450(r036):     25(ptr) Variable Function
+       453(r037):     25(ptr) Variable Function
+       459(r038):     25(ptr) Variable Function
+       463(r039):    462(ptr) Variable Function
+       466(r040):    462(ptr) Variable Function
+       469(r041):     25(ptr) Variable Function
+      473(r039a):     25(ptr) Variable Function
+       478(r042):      7(ptr) Variable Function
+       481(r043):     25(ptr) Variable Function
+       484(r044):     25(ptr) Variable Function
+       488(r045):     25(ptr) Variable Function
+       491(r046):     25(ptr) Variable Function
+       495(r047):     25(ptr) Variable Function
+       499(r048):     25(ptr) Variable Function
+       502(r049):     25(ptr) Variable Function
+       506(r050):     25(ptr) Variable Function
+       509(r051):     25(ptr) Variable Function
+       513(r052):     25(ptr) Variable Function
+       517(r053):     25(ptr) Variable Function
+       522(r054):     27(ptr) Variable Function
+       527(r055):     25(ptr) Variable Function
+       530(r056):     25(ptr) Variable Function
+       533(r057):     25(ptr) Variable Function
+       538(r058):     25(ptr) Variable Function
+       541(r059):     25(ptr) Variable Function
+       548(r060):     25(ptr) Variable Function
+       551(r061):     25(ptr) Variable Function
+       556(r062):     25(ptr) Variable Function
+       559(r063):     25(ptr) Variable Function
+       563(r064):     25(ptr) Variable Function
+       566(r065):     25(ptr) Variable Function
+       569(r066):     25(ptr) Variable Function
              338:   24(fvec2) Load 29(inF0)
              339:   131(bool) All 338
                               Store 337(r000) 339
@@ -6667,7 +6672,7 @@ gl_FragCoord origin is upper left
              390:   24(fvec2) Load 29(inF0)
              391:   24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 390
                               Store 389(r015) 391
-             395:   26(ivec2) BitCount 394
+             395:  352(ivec2) BitCount 394
                               Store 392(r016) 395
              397:   24(fvec2) Load 29(inF0)
              398:   24(fvec2) DPdx 397
@@ -6709,137 +6714,137 @@ gl_FragCoord origin is upper left
              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)
-             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)
-             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) Fwidth 459
-                              Store 458(r038) 460
-             463:   24(fvec2) Load 29(inF0)
-             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:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 478
-                              Store 477(r042) 479
-             481:   24(fvec2) Load 29(inF0)
-             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) 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) 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) 6(FSign) 537
-                              Store 536(r058) 538
-             540:   24(fvec2) Load 29(inF0)
-             541:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 540
-                              Store 539(r059) 541
+             440:   26(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 439
+                              Store 436(r031) 440
+             442:   26(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 439
+                              Store 441(r032) 442
+             444:   24(fvec2) Load 29(inF0)
+             445:   24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 444
+                              Store 443(r033) 445
+             447:   24(fvec2) Load 29(inF0)
+             448:   24(fvec2) Load 30(inF1)
+             449:   24(fvec2) FMod 447 448
+                              Store 446(r035) 449
+             451:   24(fvec2) Load 29(inF0)
+             452:   24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 451
+                              Store 450(r036) 452
+             454:   24(fvec2) Load 29(inF0)
+             456:455(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 454
+             457:  352(ivec2) CompositeExtract 456 1
+                              Store 30(inF1) 457
+             458:   24(fvec2) CompositeExtract 456 0
+                              Store 453(r037) 458
+             460:   24(fvec2) Load 29(inF0)
+             461:   24(fvec2) Fwidth 460
+                              Store 459(r038) 461
+             464:   24(fvec2) Load 29(inF0)
+             465:  380(bvec2) IsInf 464
+                              Store 463(r039) 465
+             467:   24(fvec2) Load 29(inF0)
+             468:  380(bvec2) IsNan 467
+                              Store 466(r040) 468
+             470:   24(fvec2) Load 29(inF0)
+             471:   24(fvec2) Load 30(inF1)
+             472:   24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 470 471
+                              Store 469(r041) 472
+             474:   24(fvec2) Load 29(inF0)
+             475:   24(fvec2) Load 30(inF1)
+             476:   24(fvec2) Load 31(inF2)
+             477:   24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 474 475 476
+                              Store 473(r039a) 477
+             479:   24(fvec2) Load 29(inF0)
+             480:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 479
+                              Store 478(r042) 480
+             482:   24(fvec2) Load 29(inF0)
+             483:   24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 482
+                              Store 481(r043) 483
+             485:   24(fvec2) Load 29(inF0)
+             486:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 485
+             487:   24(fvec2) VectorTimesScalar 486 262
+                              Store 484(r044) 487
+             489:   24(fvec2) Load 29(inF0)
+             490:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 489
+                              Store 488(r045) 490
+             492:   24(fvec2) Load 29(inF0)
+             493:   24(fvec2) Load 30(inF1)
+             494:   24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 492 493
+                              Store 491(r046) 494
+             496:   24(fvec2) Load 29(inF0)
+             497:   24(fvec2) Load 30(inF1)
+             498:   24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 496 497
+                              Store 495(r047) 498
+             500:   24(fvec2) Load 29(inF0)
+             501:   24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 500
+                              Store 499(r048) 501
+             503:   24(fvec2) Load 29(inF0)
+             504:   24(fvec2) Load 30(inF1)
+             505:   24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 503 504
+                              Store 502(r049) 505
+             507:   24(fvec2) Load 29(inF0)
+             508:   24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 507
+                              Store 506(r050) 508
+             510:   24(fvec2) Load 29(inF0)
+             511:   24(fvec2) CompositeConstruct 283 283
+             512:   24(fvec2) FDiv 511 510
+                              Store 509(r051) 512
+             514:   24(fvec2) Load 29(inF0)
+             515:   24(fvec2) Load 30(inF1)
+             516:   24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 514 515
+                              Store 513(r052) 516
+             518:   24(fvec2) Load 29(inF0)
+             519:   24(fvec2) Load 30(inF1)
+             521:   24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 518 519 520
+                              Store 517(r053) 521
+             526:   26(ivec2) BitReverse 525
+                              Store 522(r054) 526
+             528:   24(fvec2) Load 29(inF0)
+             529:   24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 528
+                              Store 527(r055) 529
+             531:   24(fvec2) Load 29(inF0)
+             532:   24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 531
+                              Store 530(r056) 532
+             534:   24(fvec2) Load 29(inF0)
+             535:   24(fvec2) CompositeConstruct 175 175
+             536:   24(fvec2) CompositeConstruct 283 283
+             537:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 534 535 536
+                              Store 533(r057) 537
+             539:   24(fvec2) Load 29(inF0)
+             540:   24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 539
+                              Store 538(r058) 540
              542:   24(fvec2) Load 29(inF0)
              543:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 542
-                              Store 30(inF1) 543
+                              Store 541(r059) 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) 31(Sqrt) 555
-                              Store 554(r062) 556
-             558:   24(fvec2) Load 29(inF0)
-             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
+             545:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 544
+                              Store 30(inF1) 545
+             546:   24(fvec2) Load 29(inF0)
+             547:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 546
+                              Store 31(inF2) 547
+             549:   24(fvec2) Load 29(inF0)
+             550:   24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 549
+                              Store 548(r060) 550
+             552:   24(fvec2) Load 29(inF0)
+             553:   24(fvec2) Load 30(inF1)
+             554:   24(fvec2) Load 31(inF2)
+             555:   24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 552 553 554
+                              Store 551(r061) 555
+             557:   24(fvec2) Load 29(inF0)
+             558:   24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 557
+                              Store 556(r062) 558
+             560:   24(fvec2) Load 29(inF0)
+             561:   24(fvec2) Load 30(inF1)
+             562:   24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 560 561
+                              Store 559(r063) 562
+             564:   24(fvec2) Load 29(inF0)
+             565:   24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 564
+                              Store 563(r064) 565
+             567:   24(fvec2) Load 29(inF0)
+             568:   24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 567
+                              Store 566(r065) 568
+             570:   24(fvec2) Load 29(inF0)
+             571:   24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 570
+                              Store 569(r066) 571
+                              ReturnValue 572
                               FunctionEnd
 46(PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3;):   36(fvec3) Function None 40
         41(inF0):     37(ptr) FunctionParameter
@@ -6848,306 +6853,306 @@ gl_FragCoord origin is upper left
         44(inU0):     39(ptr) FunctionParameter
         45(inU1):     39(ptr) FunctionParameter
               47:             Label
-       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) 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
+       575(r000):    132(ptr) Variable Function
+       578(r001):     37(ptr) Variable Function
+       581(r002):     37(ptr) Variable Function
+       584(r003):    132(ptr) Variable Function
+       587(r004):     37(ptr) Variable Function
+       592(r005):    591(ptr) Variable Function
+       595(r006):     39(ptr) Variable Function
+       598(r007):     37(ptr) Variable Function
+       601(r009):     37(ptr) Variable Function
+       604(r010):     37(ptr) Variable Function
+       608(r011):     37(ptr) Variable Function
+       611(r012):     37(ptr) Variable Function
+       624(r013):     37(ptr) Variable Function
+       627(r014):     37(ptr) Variable Function
+       630(r015):     39(ptr) Variable Function
+       635(r016):     37(ptr) Variable Function
+       639(r017):     37(ptr) Variable Function
+       642(r018):     37(ptr) Variable Function
+       645(r019):     37(ptr) Variable Function
+       648(r020):     37(ptr) Variable Function
+       651(r021):     37(ptr) Variable Function
+       654(r022):     37(ptr) Variable Function
+       657(r023):     37(ptr) Variable Function
+       660(r024):      7(ptr) Variable Function
+       664(r025):      7(ptr) Variable Function
+       668(r029):     37(ptr) Variable Function
+       671(r030):     37(ptr) Variable Function
+       674(r031):     37(ptr) Variable Function
+       679(r032):     39(ptr) Variable Function
+       683(r033):     39(ptr) Variable Function
+       685(r034):     37(ptr) Variable Function
+       688(r036):     37(ptr) Variable Function
+       692(r037):     37(ptr) Variable Function
+       695(r038):     37(ptr) Variable Function
+       701(r039):     37(ptr) Variable Function
+       705(r040):    704(ptr) Variable Function
+       708(r041):    704(ptr) Variable Function
+       711(r042):     37(ptr) Variable Function
+      715(r039a):     37(ptr) Variable Function
+      720(r039b):     37(ptr) Variable Function
+       726(r043):      7(ptr) Variable Function
+       729(r044):     37(ptr) Variable Function
+       732(r045):     37(ptr) Variable Function
+       736(r046):     37(ptr) Variable Function
+       739(r047):     37(ptr) Variable Function
+       743(r048):     37(ptr) Variable Function
+       747(r049):     37(ptr) Variable Function
+       750(r050):     37(ptr) Variable Function
+       754(r051):     37(ptr) Variable Function
+       757(r052):     37(ptr) Variable Function
+       761(r053):     37(ptr) Variable Function
+       765(r054):     37(ptr) Variable Function
+       769(r055):     39(ptr) Variable Function
+       772(r056):     37(ptr) Variable Function
+       775(r057):     37(ptr) Variable Function
+       778(r058):     37(ptr) Variable Function
+       783(r059):     37(ptr) Variable Function
+       786(r060):     37(ptr) Variable Function
+       793(r061):     37(ptr) Variable Function
+       796(r062):     37(ptr) Variable Function
+       801(r063):     37(ptr) Variable Function
+       804(r064):     37(ptr) Variable Function
+       808(r065):     37(ptr) Variable Function
+       811(r066):     37(ptr) Variable Function
+       814(r067):     37(ptr) Variable Function
+             576:   36(fvec3) Load 41(inF0)
+             577:   131(bool) All 576
+                              Store 575(r000) 577
+             579:   36(fvec3) Load 41(inF0)
+             580:   36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 579
+                              Store 578(r001) 580
+             582:   36(fvec3) Load 41(inF0)
+             583:   36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 582
+                              Store 581(r002) 583
+             585:   36(fvec3) Load 41(inF0)
+             586:   131(bool) Any 585
+                              Store 584(r003) 586
+             588:   36(fvec3) Load 41(inF0)
+             589:   36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 588
+                              Store 587(r004) 589
+             593:   36(fvec3) Load 41(inF0)
+             594:  590(ivec3) Bitcast 593
+                              Store 592(r005) 594
+             596:   36(fvec3) Load 41(inF0)
+             597:   38(ivec3) Bitcast 596
+                              Store 595(r006) 597
+             599:   38(ivec3) Load 44(inU0)
+             600:   36(fvec3) Bitcast 599
+                              Store 598(r007) 600
+             602:   36(fvec3) Load 41(inF0)
+             603:   36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 602
+                              Store 601(r009) 603
+             605:   36(fvec3) Load 41(inF0)
+             606:   36(fvec3) Load 42(inF1)
+             607:   36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 605 606
+                              Store 604(r010) 607
+             609:   36(fvec3) Load 41(inF0)
+             610:   36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 609
+                              Store 608(r011) 610
+             612:   36(fvec3) Load 41(inF0)
+             613:   36(fvec3) Load 42(inF1)
+             614:   36(fvec3) Load 43(inF2)
+             615:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 612 613 614
+                              Store 611(r012) 615
+             616:   36(fvec3) Load 41(inF0)
+             619:  618(bvec3) FOrdLessThan 616 617
+             620:   131(bool) Any 619
+                              SelectionMerge 622 None
+                              BranchConditional 620 621 622
+             621:               Label
                                 Kill
-             620:             Label
-             623:   36(fvec3) Load 41(inF0)
-             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) 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
+             622:             Label
+             625:   36(fvec3) Load 41(inF0)
+             626:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 625
+                              Store 624(r013) 626
+             628:   36(fvec3) Load 41(inF0)
+             629:   36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 628
+                              Store 627(r014) 629
+             634:   38(ivec3) BitCount 633
+                              Store 630(r015) 634
+             636:   36(fvec3) Load 41(inF0)
+             637:   36(fvec3) Load 42(inF1)
+             638:   36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 636 637
+                              Store 635(r016) 638
              640:   36(fvec3) Load 41(inF0)
-             641:   36(fvec3) DPdxCoarse 640
-                              Store 639(r018) 641
+             641:   36(fvec3) DPdx 640
+                              Store 639(r017) 641
              643:   36(fvec3) Load 41(inF0)
-             644:   36(fvec3) DPdxFine 643
-                              Store 642(r019) 644
+             644:   36(fvec3) DPdxCoarse 643
+                              Store 642(r018) 644
              646:   36(fvec3) Load 41(inF0)
-             647:   36(fvec3) DPdy 646
-                              Store 645(r020) 647
+             647:   36(fvec3) DPdxFine 646
+                              Store 645(r019) 647
              649:   36(fvec3) Load 41(inF0)
-             650:   36(fvec3) DPdyCoarse 649
-                              Store 648(r021) 650
+             650:   36(fvec3) DPdy 649
+                              Store 648(r020) 650
              652:   36(fvec3) Load 41(inF0)
-             653:   36(fvec3) DPdyFine 652
-                              Store 651(r022) 653
+             653:   36(fvec3) DPdyCoarse 652
+                              Store 651(r021) 653
              655:   36(fvec3) Load 41(inF0)
-             656:   36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 655
-                              Store 654(r023) 656
+             656:   36(fvec3) DPdyFine 655
+                              Store 654(r022) 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:    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
+             659:   36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 658
+                              Store 657(r023) 659
+             661:   36(fvec3) Load 41(inF0)
+             662:   36(fvec3) Load 42(inF1)
+             663:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 661 662
+                              Store 660(r024) 663
+             665:   36(fvec3) Load 41(inF0)
+             666:   36(fvec3) Load 42(inF1)
+             667:    6(float) Dot 665 666
+                              Store 664(r025) 667
              669:   36(fvec3) Load 41(inF0)
-             670:   36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 669
-                              Store 668(r030) 670
+             670:   36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 669
+                              Store 668(r029) 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)
-             684:   36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 683
-                              Store 682(r034) 684
+             673:   36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 672
+                              Store 671(r030) 673
+             675:   36(fvec3) Load 41(inF0)
+             676:   36(fvec3) Load 42(inF1)
+             677:   36(fvec3) Load 43(inF2)
+             678:   36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 675 676 677
+                              Store 674(r031) 678
+             682:   38(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 681
+                              Store 679(r032) 682
+             684:   38(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 681
+                              Store 683(r033) 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
+             687:   36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 686
+                              Store 685(r034) 687
+             689:   36(fvec3) Load 41(inF0)
+             690:   36(fvec3) Load 42(inF1)
+             691:   36(fvec3) FMod 689 690
+                              Store 688(r036) 691
              693:   36(fvec3) Load 41(inF0)
-             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) Fwidth 699
-                              Store 698(r039) 700
-             703:   36(fvec3) Load 41(inF0)
-             704:  616(bvec3) IsInf 703
-                              Store 702(r040) 704
+             694:   36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 693
+                              Store 692(r037) 694
+             696:   36(fvec3) Load 41(inF0)
+             698:697(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 696
+             699:  590(ivec3) CompositeExtract 698 1
+                              Store 42(inF1) 699
+             700:   36(fvec3) CompositeExtract 698 0
+                              Store 695(r038) 700
+             702:   36(fvec3) Load 41(inF0)
+             703:   36(fvec3) Fwidth 702
+                              Store 701(r039) 703
              706:   36(fvec3) Load 41(inF0)
-             707:  616(bvec3) IsNan 706
-                              Store 705(r041) 707
+             707:  618(bvec3) IsInf 706
+                              Store 705(r040) 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:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 724
-                              Store 723(r043) 725
+             710:  618(bvec3) IsNan 709
+                              Store 708(r041) 710
+             712:   36(fvec3) Load 41(inF0)
+             713:   36(fvec3) Load 42(inF1)
+             714:   36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 712 713
+                              Store 711(r042) 714
+             716:   36(fvec3) Load 41(inF0)
+             717:   36(fvec3) Load 42(inF1)
+             718:   36(fvec3) Load 43(inF2)
+             719:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 716 717 718
+                              Store 715(r039a) 719
+             721:   36(fvec3) Load 41(inF0)
+             722:   36(fvec3) Load 42(inF1)
+             724:   36(fvec3) CompositeConstruct 723 723 723
+             725:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 721 722 724
+                              Store 720(r039b) 725
              727:   36(fvec3) Load 41(inF0)
-             728:   36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 727
-                              Store 726(r044) 728
+             728:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 727
+                              Store 726(r043) 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
+             731:   36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 730
+                              Store 729(r044) 731
+             733:   36(fvec3) Load 41(inF0)
+             734:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 733
+             735:   36(fvec3) VectorTimesScalar 734 262
+                              Store 732(r045) 735
              737:   36(fvec3) Load 41(inF0)
-             738:   36(fvec3) Load 42(inF1)
-             739:   36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 737 738
-                              Store 736(r047) 739
-             741:   36(fvec3) Load 41(inF0)
-             742:   36(fvec3) Load 42(inF1)
-             743:   36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 741 742
-                              Store 740(r048) 743
-             745:   36(fvec3) Load 41(inF0)
-             746:   36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 745
-                              Store 744(r049) 746
+             738:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 737
+                              Store 736(r046) 738
+             740:   36(fvec3) Load 41(inF0)
+             741:   36(fvec3) Load 42(inF1)
+             742:   36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 740 741
+                              Store 739(r047) 742
+             744:   36(fvec3) Load 41(inF0)
+             745:   36(fvec3) Load 42(inF1)
+             746:   36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 744 745
+                              Store 743(r048) 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
+             749:   36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 748
+                              Store 747(r049) 749
+             751:   36(fvec3) Load 41(inF0)
+             752:   36(fvec3) Load 42(inF1)
+             753:   36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 751 752
+                              Store 750(r050) 753
              755:   36(fvec3) Load 41(inF0)
-             756:   36(fvec3) CompositeConstruct 284 284 284
-             757:   36(fvec3) FDiv 756 755
-                              Store 754(r052) 757
-             759:   36(fvec3) Load 41(inF0)
-             760:   36(fvec3) Load 42(inF1)
-             761:   36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 759 760
-                              Store 758(r053) 761
-             763:   36(fvec3) Load 41(inF0)
-             764:   36(fvec3) Load 42(inF1)
-             765:   36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 763 764 519
-                              Store 762(r054) 765
-             768:   38(ivec3) BitReverse 767
-                              Store 766(r055) 768
-             770:   36(fvec3) Load 41(inF0)
-             771:   36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 770
-                              Store 769(r056) 771
+             756:   36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 755
+                              Store 754(r051) 756
+             758:   36(fvec3) Load 41(inF0)
+             759:   36(fvec3) CompositeConstruct 283 283 283
+             760:   36(fvec3) FDiv 759 758
+                              Store 757(r052) 760
+             762:   36(fvec3) Load 41(inF0)
+             763:   36(fvec3) Load 42(inF1)
+             764:   36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 762 763
+                              Store 761(r053) 764
+             766:   36(fvec3) Load 41(inF0)
+             767:   36(fvec3) Load 42(inF1)
+             768:   36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 766 767 520
+                              Store 765(r054) 768
+             771:   38(ivec3) BitReverse 770
+                              Store 769(r055) 771
              773:   36(fvec3) Load 41(inF0)
-             774:   36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 773
-                              Store 772(r057) 774
+             774:   36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 773
+                              Store 772(r056) 774
              776:   36(fvec3) Load 41(inF0)
-             777:   36(fvec3) CompositeConstruct 175 175 175
-             778:   36(fvec3) CompositeConstruct 284 284 284
-             779:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 776 777 778
-                              Store 775(r058) 779
-             781:   36(fvec3) Load 41(inF0)
-             782:   36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 781
-                              Store 780(r059) 782
+             777:   36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 776
+                              Store 775(r057) 777
+             779:   36(fvec3) Load 41(inF0)
+             780:   36(fvec3) CompositeConstruct 175 175 175
+             781:   36(fvec3) CompositeConstruct 283 283 283
+             782:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 779 780 781
+                              Store 778(r058) 782
              784:   36(fvec3) Load 41(inF0)
-             785:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 784
-                              Store 783(r060) 785
-             786:   36(fvec3) Load 41(inF0)
-             787:   36(fvec3) 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
+             785:   36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 784
+                              Store 783(r059) 785
+             787:   36(fvec3) Load 41(inF0)
+             788:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 787
+                              Store 786(r060) 788
+             789:   36(fvec3) Load 41(inF0)
+             790:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 789
+                              Store 42(inF1) 790
              791:   36(fvec3) Load 41(inF0)
-             792:   36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 791
-                              Store 790(r061) 792
+             792:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 791
+                              Store 43(inF2) 792
              794:   36(fvec3) Load 41(inF0)
-             795:   36(fvec3) Load 42(inF1)
-             796:   36(fvec3) Load 43(inF2)
-             797:   36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 794 795 796
-                              Store 793(r062) 797
-             799:   36(fvec3) Load 41(inF0)
-             800:   36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 799
-                              Store 798(r063) 800
+             795:   36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 794
+                              Store 793(r061) 795
+             797:   36(fvec3) Load 41(inF0)
+             798:   36(fvec3) Load 42(inF1)
+             799:   36(fvec3) Load 43(inF2)
+             800:   36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 797 798 799
+                              Store 796(r062) 800
              802:   36(fvec3) Load 41(inF0)
-             803:   36(fvec3) Load 42(inF1)
-             804:   36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 802 803
-                              Store 801(r064) 804
-             806:   36(fvec3) Load 41(inF0)
-             807:   36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 806
-                              Store 805(r065) 807
+             803:   36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 802
+                              Store 801(r063) 803
+             805:   36(fvec3) Load 41(inF0)
+             806:   36(fvec3) Load 42(inF1)
+             807:   36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 805 806
+                              Store 804(r064) 807
              809:   36(fvec3) Load 41(inF0)
-             810:   36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 809
-                              Store 808(r066) 810
+             810:   36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 809
+                              Store 808(r065) 810
              812:   36(fvec3) Load 41(inF0)
-             813:   36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 812
-                              Store 811(r067) 813
-                              ReturnValue 815
+             813:   36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 812
+                              Store 811(r066) 813
+             815:   36(fvec3) Load 41(inF0)
+             816:   36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 815
+                              Store 814(r067) 816
+                              ReturnValue 818
                               FunctionEnd
 58(PixelShaderFunction(vf4;vf4;vf4;vu4;vu4;):   48(fvec4) Function None 52
         53(inF0):     49(ptr) FunctionParameter
@@ -7156,1018 +7161,1018 @@ gl_FragCoord origin is upper left
         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
+       821(r000):    132(ptr) Variable Function
+       824(r001):     49(ptr) Variable Function
+       827(r002):     49(ptr) Variable Function
+       830(r003):    132(ptr) Variable Function
+       833(r004):     49(ptr) Variable Function
+       838(r005):    837(ptr) Variable Function
+       841(r006):     51(ptr) Variable Function
+       844(r007):     49(ptr) Variable Function
+       847(r009):     49(ptr) Variable Function
+       850(r010):     49(ptr) Variable Function
+       854(r011):     49(ptr) Variable Function
+       857(r012):     49(ptr) Variable Function
+       870(r013):     49(ptr) Variable Function
+       873(r014):     49(ptr) Variable Function
+       876(r015):     51(ptr) Variable Function
+       879(r016):     49(ptr) Variable Function
+       882(r017):     49(ptr) Variable Function
+       885(r018):     49(ptr) Variable Function
+       888(r019):     49(ptr) Variable Function
+       891(r020):     49(ptr) Variable Function
+       894(r021):     49(ptr) Variable Function
+       897(r022):     49(ptr) Variable Function
+       900(r023):      7(ptr) Variable Function
+       904(r024):      7(ptr) Variable Function
+       908(r025):     49(ptr) Variable Function
+       919(r029):     49(ptr) Variable Function
+       922(r030):     49(ptr) Variable Function
+       925(r031):     49(ptr) Variable Function
+       930(r032):     51(ptr) Variable Function
+       935(r033):     51(ptr) Variable Function
+       937(r034):     49(ptr) Variable Function
+       940(r036):     49(ptr) Variable Function
+       944(r037):     49(ptr) Variable Function
+       947(r038):     49(ptr) Variable Function
+       953(r039):     49(ptr) Variable Function
+       957(r040):    956(ptr) Variable Function
+       960(r041):    956(ptr) Variable Function
+       963(r042):     49(ptr) Variable Function
+      967(r039a):     49(ptr) Variable Function
+       972(r043):      7(ptr) Variable Function
+       975(r044):     49(ptr) Variable Function
+       978(r045):     49(ptr) Variable Function
+       982(r046):     49(ptr) Variable Function
+       985(r047):     49(ptr) Variable Function
+       989(r048):     49(ptr) Variable Function
+       993(r049):     49(ptr) Variable Function
+       996(r050):     49(ptr) Variable Function
+      1000(r051):     49(ptr) Variable Function
+      1003(r052):     49(ptr) Variable Function
+      1007(r053):     49(ptr) Variable Function
+      1011(r054):     49(ptr) Variable Function
+      1015(r055):     51(ptr) Variable Function
+      1018(r056):     49(ptr) Variable Function
+      1021(r057):     49(ptr) Variable Function
+      1024(r058):     49(ptr) Variable Function
+      1029(r059):     49(ptr) Variable Function
+      1032(r060):     49(ptr) Variable Function
+      1039(r061):     49(ptr) Variable Function
+      1042(r062):     49(ptr) Variable Function
+      1047(r063):     49(ptr) Variable Function
+      1050(r064):     49(ptr) Variable Function
+      1054(r065):     49(ptr) Variable Function
+      1057(r066):     49(ptr) Variable Function
+      1060(r067):     49(ptr) Variable Function
              822:   48(fvec4) Load 53(inF0)
-             823:   48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 822
-                              Store 821(r001) 823
+             823:   131(bool) All 822
+                              Store 821(r000) 823
              825:   48(fvec4) Load 53(inF0)
-             826:   48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 825
-                              Store 824(r002) 826
+             826:   48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 825
+                              Store 824(r001) 826
              828:   48(fvec4) Load 53(inF0)
-             829:   131(bool) Any 828
-                              Store 827(r003) 829
+             829:   48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 828
+                              Store 827(r002) 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
+             832:   131(bool) Any 831
+                              Store 830(r003) 832
+             834:   48(fvec4) Load 53(inF0)
+             835:   48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 834
+                              Store 833(r004) 835
              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
+             840:  836(ivec4) Bitcast 839
+                              Store 838(r005) 840
+             842:   48(fvec4) Load 53(inF0)
+             843:   50(ivec4) Bitcast 842
+                              Store 841(r006) 843
+             845:   50(ivec4) Load 56(inU0)
+             846:   48(fvec4) Bitcast 845
+                              Store 844(r007) 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
+             849:   48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 848
+                              Store 847(r009) 849
+             851:   48(fvec4) Load 53(inF0)
+             852:   48(fvec4) Load 54(inF1)
+             853:   48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 851 852
+                              Store 850(r010) 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
+             856:   48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 855
+                              Store 854(r011) 856
+             858:   48(fvec4) Load 53(inF0)
+             859:   48(fvec4) Load 54(inF1)
+             860:   48(fvec4) Load 55(inF2)
+             861:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 858 859 860
+                              Store 857(r012) 861
+             862:   48(fvec4) Load 53(inF0)
+             865:  864(bvec4) FOrdLessThan 862 863
+             866:   131(bool) Any 865
+                              SelectionMerge 868 None
+                              BranchConditional 866 867 868
+             867:               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
+             868:             Label
              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
+             872:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 871
+                              Store 870(r013) 872
+             874:   48(fvec4) Load 53(inF0)
+             875:   48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 874
+                              Store 873(r014) 875
+             878:   50(ivec4) BitCount 877
+                              Store 876(r015) 878
              880:   48(fvec4) Load 53(inF0)
-             881:   48(fvec4) DPdxCoarse 880
-                              Store 879(r017) 881
+             881:   48(fvec4) DPdx 880
+                              Store 879(r016) 881
              883:   48(fvec4) Load 53(inF0)
-             884:   48(fvec4) DPdxFine 883
-                              Store 882(r018) 884
+             884:   48(fvec4) DPdxCoarse 883
+                              Store 882(r017) 884
              886:   48(fvec4) Load 53(inF0)
-             887:   48(fvec4) DPdy 886
-                              Store 885(r019) 887
+             887:   48(fvec4) DPdxFine 886
+                              Store 885(r018) 887
              889:   48(fvec4) Load 53(inF0)
-             890:   48(fvec4) DPdyCoarse 889
-                              Store 888(r020) 890
+             890:   48(fvec4) DPdy 889
+                              Store 888(r019) 890
              892:   48(fvec4) Load 53(inF0)
-             893:   48(fvec4) DPdyFine 892
-                              Store 891(r021) 893
+             893:   48(fvec4) DPdyCoarse 892
+                              Store 891(r020) 893
              895:   48(fvec4) Load 53(inF0)
-             896:   48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 895
-                              Store 894(r022) 896
+             896:   48(fvec4) DPdyFine 895
+                              Store 894(r021) 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
+             899:   48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 898
+                              Store 897(r022) 899
+             901:   48(fvec4) Load 53(inF0)
+             902:   48(fvec4) Load 54(inF1)
+             903:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 901 902
+                              Store 900(r023) 903
+             905:   48(fvec4) Load 53(inF0)
+             906:   48(fvec4) Load 54(inF1)
+             907:    6(float) Dot 905 906
+                              Store 904(r024) 907
+             909:      7(ptr) AccessChain 53(inF0) 523
+             910:    6(float) Load 909
+             911:      7(ptr) AccessChain 54(inF1) 523
              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
+             913:    6(float) FMul 910 912
+             914:      7(ptr) AccessChain 53(inF0) 524
+             915:    6(float) Load 914
+             916:      7(ptr) AccessChain 54(inF1) 631
+             917:    6(float) Load 916
+             918:   48(fvec4) CompositeConstruct 283 913 915 917
+                              Store 908(r025) 918
              920:   48(fvec4) Load 53(inF0)
-             921:   48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 920
-                              Store 919(r030) 921
+             921:   48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 920
+                              Store 919(r029) 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
+             924:   48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 923
+                              Store 922(r030) 924
+             926:   48(fvec4) Load 53(inF0)
+             927:   48(fvec4) Load 54(inF1)
+             928:   48(fvec4) Load 55(inF2)
+             929:   48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 926 927 928
+                              Store 925(r031) 929
+             934:   50(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 933
+                              Store 930(r032) 934
+             936:   50(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 933
+                              Store 935(r033) 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
+             939:   48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 938
+                              Store 937(r034) 939
+             941:   48(fvec4) Load 53(inF0)
+             942:   48(fvec4) Load 54(inF1)
+             943:   48(fvec4) FMod 941 942
+                              Store 940(r036) 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
+             946:   48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 945
+                              Store 944(r037) 946
+             948:   48(fvec4) Load 53(inF0)
+             950:949(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 948
+             951:  836(ivec4) CompositeExtract 950 1
+                              Store 54(inF1) 951
+             952:   48(fvec4) CompositeExtract 950 0
+                              Store 947(r038) 952
+             954:   48(fvec4) Load 53(inF0)
+             955:   48(fvec4) Fwidth 954
+                              Store 953(r039) 955
              958:   48(fvec4) Load 53(inF0)
-             959:  861(bvec4) IsNan 958
-                              Store 957(r041) 959
+             959:  864(bvec4) IsInf 958
+                              Store 957(r040) 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
+             962:  864(bvec4) IsNan 961
+                              Store 960(r041) 962
+             964:   48(fvec4) Load 53(inF0)
+             965:   48(fvec4) Load 54(inF1)
+             966:   48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 964 965
+                              Store 963(r042) 966
+             968:   48(fvec4) Load 53(inF0)
+             969:   48(fvec4) Load 54(inF1)
+             970:   48(fvec4) Load 55(inF2)
+             971:   48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 968 969 970
+                              Store 967(r039a) 971
              973:   48(fvec4) Load 53(inF0)
-             974:   48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 973
-                              Store 972(r044) 974
+             974:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 973
+                              Store 972(r043) 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
+             977:   48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 976
+                              Store 975(r044) 977
+             979:   48(fvec4) Load 53(inF0)
+             980:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 979
+             981:   48(fvec4) VectorTimesScalar 980 262
+                              Store 978(r045) 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
+             984:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 983
+                              Store 982(r046) 984
+             986:   48(fvec4) Load 53(inF0)
+             987:   48(fvec4) Load 54(inF1)
+             988:   48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 986 987
+                              Store 985(r047) 988
+             990:   48(fvec4) Load 53(inF0)
+             991:   48(fvec4) Load 54(inF1)
+             992:   48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 990 991
+                              Store 989(r048) 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
+             995:   48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 994
+                              Store 993(r049) 995
+             997:   48(fvec4) Load 53(inF0)
+             998:   48(fvec4) Load 54(inF1)
+             999:   48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 997 998
+                              Store 996(r050) 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
+            1002:   48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 1001
+                              Store 1000(r051) 1002
+            1004:   48(fvec4) Load 53(inF0)
+            1005:   48(fvec4) CompositeConstruct 283 283 283 283
+            1006:   48(fvec4) FDiv 1005 1004
+                              Store 1003(r052) 1006
+            1008:   48(fvec4) Load 53(inF0)
+            1009:   48(fvec4) Load 54(inF1)
+            1010:   48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1008 1009
+                              Store 1007(r053) 1010
+            1012:   48(fvec4) Load 53(inF0)
+            1013:   48(fvec4) Load 54(inF1)
+            1014:   48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1012 1013 520
+                              Store 1011(r054) 1014
+            1017:   50(ivec4) BitReverse 1016
+                              Store 1015(r055) 1017
             1019:   48(fvec4) Load 53(inF0)
-            1020:   48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1019
-                              Store 1018(r057) 1020
+            1020:   48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1019
+                              Store 1018(r056) 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
+            1023:   48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1022
+                              Store 1021(r057) 1023
+            1025:   48(fvec4) Load 53(inF0)
+            1026:   48(fvec4) CompositeConstruct 175 175 175 175
+            1027:   48(fvec4) CompositeConstruct 283 283 283 283
+            1028:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1025 1026 1027
+                              Store 1024(r058) 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
+            1031:   48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1030
+                              Store 1029(r059) 1031
+            1033:   48(fvec4) Load 53(inF0)
+            1034:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1033
+                              Store 1032(r060) 1034
+            1035:   48(fvec4) Load 53(inF0)
+            1036:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1035
+                              Store 54(inF1) 1036
             1037:   48(fvec4) Load 53(inF0)
-            1038:   48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1037
-                              Store 1036(r061) 1038
+            1038:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1037
+                              Store 55(inF2) 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
+            1041:   48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1040
+                              Store 1039(r061) 1041
+            1043:   48(fvec4) Load 53(inF0)
+            1044:   48(fvec4) Load 54(inF1)
+            1045:   48(fvec4) Load 55(inF2)
+            1046:   48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1043 1044 1045
+                              Store 1042(r062) 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
+            1049:   48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1048
+                              Store 1047(r063) 1049
+            1051:   48(fvec4) Load 53(inF0)
+            1052:   48(fvec4) Load 54(inF1)
+            1053:   48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1051 1052
+                              Store 1050(r064) 1053
             1055:   48(fvec4) Load 53(inF0)
-            1056:   48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1055
-                              Store 1054(r066) 1056
+            1056:   48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1055
+                              Store 1054(r065) 1056
             1058:   48(fvec4) Load 53(inF0)
-            1059:   48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1058
-                              Store 1057(r067) 1059
-                              ReturnValue 1061
+            1059:   48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1058
+                              Store 1057(r066) 1059
+            1061:   48(fvec4) Load 53(inF0)
+            1062:   48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1061
+                              Store 1060(r067) 1062
+                              ReturnValue 1064
                               FunctionEnd
 66(PixelShaderFunction2x2(mf22;mf22;mf22;):          60 Function None 62
         63(inF0):     61(ptr) FunctionParameter
         64(inF1):     61(ptr) FunctionParameter
         65(inF2):     61(ptr) FunctionParameter
               67:             Label
-      1064(r000):    132(ptr) Variable Function
-      1067(r001):     61(ptr) Variable Function
-      1072(r003):    132(ptr) Variable Function
-      1075(r004):     61(ptr) Variable Function
-      1078(r005):     61(ptr) Variable Function
-      1081(r006):     61(ptr) Variable Function
-      1085(r007):     61(ptr) Variable Function
-      1096(r008):     61(ptr) Variable Function
-      1101(r009):     61(ptr) Variable Function
-      1104(r010):     61(ptr) Variable Function
-      1107(r011):     61(ptr) Variable Function
-      1110(r012):     61(ptr) Variable Function
-      1113(r013):     61(ptr) Variable Function
-      1116(r014):     61(ptr) Variable Function
-      1119(r015):     61(ptr) Variable Function
-      1122(r016):     61(ptr) Variable Function
-      1125(r017):     61(ptr) Variable Function
-      1128(r018):      7(ptr) Variable Function
-      1131(r019):     61(ptr) Variable Function
-      1134(R020):     61(ptr) Variable Function
-      1137(r021):     61(ptr) Variable Function
-      1140(r022):     61(ptr) Variable Function
-      1150(r023):     61(ptr) Variable Function
-      1153(r024):     61(ptr) Variable Function
-      1159(r025):     61(ptr) Variable Function
-      1162(r026):     61(ptr) Variable Function
-     1166(r026a):     61(ptr) Variable Function
-      1171(r027):     61(ptr) Variable Function
-      1174(r028):     61(ptr) Variable Function
-      1178(r029):     61(ptr) Variable Function
-      1181(r030):     61(ptr) Variable Function
-      1185(r031):     61(ptr) Variable Function
-      1189(r032):     61(ptr) Variable Function
-      1193(r033):     61(ptr) Variable Function
-      1196(r034):     61(ptr) Variable Function
-      1199(r035):     61(ptr) Variable Function
-      1202(r036):     61(ptr) Variable Function
-      1207(r037):     61(ptr) Variable Function
-      1210(r038):     61(ptr) Variable Function
-      1217(r039):     61(ptr) Variable Function
-      1220(r049):     61(ptr) Variable Function
-      1225(r041):     61(ptr) Variable Function
-      1228(r042):     61(ptr) Variable Function
-      1232(r043):     61(ptr) Variable Function
-      1235(r044):     61(ptr) Variable Function
-      1240(r046):     61(ptr) Variable Function
-            1065:          60 Load 63(inF0)
-            1066:   131(bool) All 1065
-                              Store 1064(r000) 1066
+      1067(r000):    132(ptr) Variable Function
+      1070(r001):     61(ptr) Variable Function
+      1075(r003):    132(ptr) Variable Function
+      1078(r004):     61(ptr) Variable Function
+      1081(r005):     61(ptr) Variable Function
+      1084(r006):     61(ptr) Variable Function
+      1088(r007):     61(ptr) Variable Function
+      1099(r008):     61(ptr) Variable Function
+      1104(r009):     61(ptr) Variable Function
+      1107(r010):     61(ptr) Variable Function
+      1110(r011):     61(ptr) Variable Function
+      1113(r012):     61(ptr) Variable Function
+      1116(r013):     61(ptr) Variable Function
+      1119(r014):     61(ptr) Variable Function
+      1122(r015):     61(ptr) Variable Function
+      1125(r016):     61(ptr) Variable Function
+      1128(r017):     61(ptr) Variable Function
+      1131(r018):      7(ptr) Variable Function
+      1134(r019):     61(ptr) Variable Function
+      1137(R020):     61(ptr) Variable Function
+      1140(r021):     61(ptr) Variable Function
+      1143(r022):     61(ptr) Variable Function
+      1153(r023):     61(ptr) Variable Function
+      1156(r024):     61(ptr) Variable Function
+      1162(r025):     61(ptr) Variable Function
+      1165(r026):     61(ptr) Variable Function
+     1169(r026a):     61(ptr) Variable Function
+      1174(r027):     61(ptr) Variable Function
+      1177(r028):     61(ptr) Variable Function
+      1181(r029):     61(ptr) Variable Function
+      1184(r030):     61(ptr) Variable Function
+      1188(r031):     61(ptr) Variable Function
+      1192(r032):     61(ptr) Variable Function
+      1196(r033):     61(ptr) Variable Function
+      1199(r034):     61(ptr) Variable Function
+      1202(r035):     61(ptr) Variable Function
+      1205(r036):     61(ptr) Variable Function
+      1210(r037):     61(ptr) Variable Function
+      1213(r038):     61(ptr) Variable Function
+      1220(r039):     61(ptr) Variable Function
+      1223(r049):     61(ptr) Variable Function
+      1228(r041):     61(ptr) Variable Function
+      1231(r042):     61(ptr) Variable Function
+      1235(r043):     61(ptr) Variable Function
+      1238(r044):     61(ptr) Variable Function
+      1243(r046):     61(ptr) Variable Function
             1068:          60 Load 63(inF0)
-            1069:          60 ExtInst 1(GLSL.std.450) 4(FAbs) 1068
-                              Store 1067(r001) 1069
-            1070:          60 Load 63(inF0)
-            1071:          60 ExtInst 1(GLSL.std.450) 17(Acos) 1070
+            1069:   131(bool) All 1068
+                              Store 1067(r000) 1069
+            1071:          60 Load 63(inF0)
+            1072:          60 ExtInst 1(GLSL.std.450) 4(FAbs) 1071
+                              Store 1070(r001) 1072
             1073:          60 Load 63(inF0)
-            1074:   131(bool) Any 1073
-                              Store 1072(r003) 1074
+            1074:          60 ExtInst 1(GLSL.std.450) 17(Acos) 1073
             1076:          60 Load 63(inF0)
-            1077:          60 ExtInst 1(GLSL.std.450) 16(Asin) 1076
-                              Store 1075(r004) 1077
+            1077:   131(bool) Any 1076
+                              Store 1075(r003) 1077
             1079:          60 Load 63(inF0)
-            1080:          60 ExtInst 1(GLSL.std.450) 18(Atan) 1079
-                              Store 1078(r005) 1080
+            1080:          60 ExtInst 1(GLSL.std.450) 16(Asin) 1079
+                              Store 1078(r004) 1080
             1082:          60 Load 63(inF0)
-            1083:          60 Load 64(inF1)
-            1084:          60 ExtInst 1(GLSL.std.450) 25(Atan2) 1082 1083
-                              Store 1081(r006) 1084
-            1086:          60 Load 63(inF0)
-            1087:          60 ExtInst 1(GLSL.std.450) 9(Ceil) 1086
-                              Store 1085(r007) 1087
-            1088:          60 Load 63(inF0)
-            1091:        1090 FOrdLessThan 1088 1089
-            1092:   131(bool) Any 1091
-                              SelectionMerge 1094 None
-                              BranchConditional 1092 1093 1094
-            1093:               Label
+            1083:          60 ExtInst 1(GLSL.std.450) 18(Atan) 1082
+                              Store 1081(r005) 1083
+            1085:          60 Load 63(inF0)
+            1086:          60 Load 64(inF1)
+            1087:          60 ExtInst 1(GLSL.std.450) 25(Atan2) 1085 1086
+                              Store 1084(r006) 1087
+            1089:          60 Load 63(inF0)
+            1090:          60 ExtInst 1(GLSL.std.450) 9(Ceil) 1089
+                              Store 1088(r007) 1090
+            1091:          60 Load 63(inF0)
+            1094:        1093 FOrdLessThan 1091 1092
+            1095:   131(bool) Any 1094
+                              SelectionMerge 1097 None
+                              BranchConditional 1095 1096 1097
+            1096:               Label
                                 Kill
-            1094:             Label
-            1097:          60 Load 63(inF0)
-            1098:          60 Load 64(inF1)
-            1099:          60 Load 65(inF2)
-            1100:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 1097 1098 1099
-                              Store 1096(r008) 1100
-            1102:          60 Load 63(inF0)
-            1103:          60 ExtInst 1(GLSL.std.450) 14(Cos) 1102
-                              Store 1101(r009) 1103
+            1097:             Label
+            1100:          60 Load 63(inF0)
+            1101:          60 Load 64(inF1)
+            1102:          60 Load 65(inF2)
+            1103:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 1100 1101 1102
+                              Store 1099(r008) 1103
             1105:          60 Load 63(inF0)
-            1106:          60 ExtInst 1(GLSL.std.450) 20(Cosh) 1105
-                              Store 1104(r010) 1106
+            1106:          60 ExtInst 1(GLSL.std.450) 14(Cos) 1105
+                              Store 1104(r009) 1106
             1108:          60 Load 63(inF0)
-            1109:          60 DPdx 1108
-                              Store 1107(r011) 1109
+            1109:          60 ExtInst 1(GLSL.std.450) 20(Cosh) 1108
+                              Store 1107(r010) 1109
             1111:          60 Load 63(inF0)
-            1112:          60 DPdxCoarse 1111
-                              Store 1110(r012) 1112
+            1112:          60 DPdx 1111
+                              Store 1110(r011) 1112
             1114:          60 Load 63(inF0)
-            1115:          60 DPdxFine 1114
-                              Store 1113(r013) 1115
+            1115:          60 DPdxCoarse 1114
+                              Store 1113(r012) 1115
             1117:          60 Load 63(inF0)
-            1118:          60 DPdy 1117
-                              Store 1116(r014) 1118
+            1118:          60 DPdxFine 1117
+                              Store 1116(r013) 1118
             1120:          60 Load 63(inF0)
-            1121:          60 DPdyCoarse 1120
-                              Store 1119(r015) 1121
+            1121:          60 DPdy 1120
+                              Store 1119(r014) 1121
             1123:          60 Load 63(inF0)
-            1124:          60 DPdyFine 1123
-                              Store 1122(r016) 1124
+            1124:          60 DPdyCoarse 1123
+                              Store 1122(r015) 1124
             1126:          60 Load 63(inF0)
-            1127:          60 ExtInst 1(GLSL.std.450) 12(Degrees) 1126
-                              Store 1125(r017) 1127
+            1127:          60 DPdyFine 1126
+                              Store 1125(r016) 1127
             1129:          60 Load 63(inF0)
-            1130:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1129
-                              Store 1128(r018) 1130
+            1130:          60 ExtInst 1(GLSL.std.450) 12(Degrees) 1129
+                              Store 1128(r017) 1130
             1132:          60 Load 63(inF0)
-            1133:          60 ExtInst 1(GLSL.std.450) 27(Exp) 1132
-                              Store 1131(r019) 1133
+            1133:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1132
+                              Store 1131(r018) 1133
             1135:          60 Load 63(inF0)
-            1136:          60 ExtInst 1(GLSL.std.450) 29(Exp2) 1135
-                              Store 1134(R020) 1136
+            1136:          60 ExtInst 1(GLSL.std.450) 27(Exp) 1135
+                              Store 1134(r019) 1136
             1138:          60 Load 63(inF0)
-            1139:          60 ExtInst 1(GLSL.std.450) 8(Floor) 1138
-                              Store 1137(r021) 1139
+            1139:          60 ExtInst 1(GLSL.std.450) 29(Exp2) 1138
+                              Store 1137(R020) 1139
             1141:          60 Load 63(inF0)
-            1142:          60 Load 64(inF1)
-            1143:   24(fvec2) CompositeExtract 1141 0
-            1144:   24(fvec2) CompositeExtract 1142 0
-            1145:   24(fvec2) FMod 1143 1144
-            1146:   24(fvec2) CompositeExtract 1141 1
-            1147:   24(fvec2) CompositeExtract 1142 1
+            1142:          60 ExtInst 1(GLSL.std.450) 8(Floor) 1141
+                              Store 1140(r021) 1142
+            1144:          60 Load 63(inF0)
+            1145:          60 Load 64(inF1)
+            1146:   24(fvec2) CompositeExtract 1144 0
+            1147:   24(fvec2) CompositeExtract 1145 0
             1148:   24(fvec2) FMod 1146 1147
-            1149:          60 CompositeConstruct 1145 1148
-                              Store 1140(r022) 1149
-            1151:          60 Load 63(inF0)
-            1152:          60 ExtInst 1(GLSL.std.450) 10(Fract) 1151
-                              Store 1150(r023) 1152
+            1149:   24(fvec2) CompositeExtract 1144 1
+            1150:   24(fvec2) CompositeExtract 1145 1
+            1151:   24(fvec2) FMod 1149 1150
+            1152:          60 CompositeConstruct 1148 1151
+                              Store 1143(r022) 1152
             1154:          60 Load 63(inF0)
-            1156:1155(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1154
-            1157:  352(ivec2) CompositeExtract 1156 1
-                              Store 64(inF1) 1157
-            1158:          60 CompositeExtract 1156 0
-                              Store 1153(r024) 1158
-            1160:          60 Load 63(inF0)
-            1161:          60 Fwidth 1160
-                              Store 1159(r025) 1161
+            1155:          60 ExtInst 1(GLSL.std.450) 10(Fract) 1154
+                              Store 1153(r023) 1155
+            1157:          60 Load 63(inF0)
+            1159:1158(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1157
+            1160:  352(ivec2) CompositeExtract 1159 1
+                              Store 64(inF1) 1160
+            1161:          60 CompositeExtract 1159 0
+                              Store 1156(r024) 1161
             1163:          60 Load 63(inF0)
-            1164:          60 Load 64(inF1)
-            1165:          60 ExtInst 1(GLSL.std.450) 53(Ldexp) 1163 1164
-                              Store 1162(r026) 1165
-            1167:          60 Load 63(inF0)
-            1168:          60 Load 64(inF1)
-            1169:          60 Load 65(inF2)
-            1170:          60 ExtInst 1(GLSL.std.450) 46(FMix) 1167 1168 1169
-                              Store 1166(r026a) 1170
-            1172:          60 Load 63(inF0)
-            1173:          60 ExtInst 1(GLSL.std.450) 28(Log) 1172
-                              Store 1171(r027) 1173
+            1164:          60 Fwidth 1163
+                              Store 1162(r025) 1164
+            1166:          60 Load 63(inF0)
+            1167:          60 Load 64(inF1)
+            1168:          60 ExtInst 1(GLSL.std.450) 53(Ldexp) 1166 1167
+                              Store 1165(r026) 1168
+            1170:          60 Load 63(inF0)
+            1171:          60 Load 64(inF1)
+            1172:          60 Load 65(inF2)
+            1173:          60 ExtInst 1(GLSL.std.450) 46(FMix) 1170 1171 1172
+                              Store 1169(r026a) 1173
             1175:          60 Load 63(inF0)
-            1176:          60 ExtInst 1(GLSL.std.450) 30(Log2) 1175
-            1177:          60 MatrixTimesScalar 1176 263
-                              Store 1174(r028) 1177
-            1179:          60 Load 63(inF0)
-            1180:          60 ExtInst 1(GLSL.std.450) 30(Log2) 1179
-                              Store 1178(r029) 1180
+            1176:          60 ExtInst 1(GLSL.std.450) 28(Log) 1175
+                              Store 1174(r027) 1176
+            1178:          60 Load 63(inF0)
+            1179:          60 ExtInst 1(GLSL.std.450) 30(Log2) 1178
+            1180:          60 MatrixTimesScalar 1179 262
+                              Store 1177(r028) 1180
             1182:          60 Load 63(inF0)
-            1183:          60 Load 64(inF1)
-            1184:          60 ExtInst 1(GLSL.std.450) 40(FMax) 1182 1183
-                              Store 1181(r030) 1184
-            1186:          60 Load 63(inF0)
-            1187:          60 Load 64(inF1)
-            1188:          60 ExtInst 1(GLSL.std.450) 37(FMin) 1186 1187
-                              Store 1185(r031) 1188
-            1190:          60 Load 63(inF0)
-            1191:          60 Load 64(inF1)
-            1192:          60 ExtInst 1(GLSL.std.450) 26(Pow) 1190 1191
-                              Store 1189(r032) 1192
-            1194:          60 Load 63(inF0)
-            1195:          60 ExtInst 1(GLSL.std.450) 11(Radians) 1194
-                              Store 1193(r033) 1195
+            1183:          60 ExtInst 1(GLSL.std.450) 30(Log2) 1182
+                              Store 1181(r029) 1183
+            1185:          60 Load 63(inF0)
+            1186:          60 Load 64(inF1)
+            1187:          60 ExtInst 1(GLSL.std.450) 40(FMax) 1185 1186
+                              Store 1184(r030) 1187
+            1189:          60 Load 63(inF0)
+            1190:          60 Load 64(inF1)
+            1191:          60 ExtInst 1(GLSL.std.450) 37(FMin) 1189 1190
+                              Store 1188(r031) 1191
+            1193:          60 Load 63(inF0)
+            1194:          60 Load 64(inF1)
+            1195:          60 ExtInst 1(GLSL.std.450) 26(Pow) 1193 1194
+                              Store 1192(r032) 1195
             1197:          60 Load 63(inF0)
-            1198:          60 ExtInst 1(GLSL.std.450) 2(RoundEven) 1197
-                              Store 1196(r034) 1198
+            1198:          60 ExtInst 1(GLSL.std.450) 11(Radians) 1197
+                              Store 1196(r033) 1198
             1200:          60 Load 63(inF0)
-            1201:          60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1200
-                              Store 1199(r035) 1201
+            1201:          60 ExtInst 1(GLSL.std.450) 2(RoundEven) 1200
+                              Store 1199(r034) 1201
             1203:          60 Load 63(inF0)
-            1204:   24(fvec2) CompositeConstruct 175 175
-            1205:   24(fvec2) CompositeConstruct 284 284
-            1206:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 1203 1204 1205
-                              Store 1202(r036) 1206
-            1208:          60 Load 63(inF0)
-            1209:          60 ExtInst 1(GLSL.std.450) 6(FSign) 1208
-                              Store 1207(r037) 1209
+            1204:          60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1203
+                              Store 1202(r035) 1204
+            1206:          60 Load 63(inF0)
+            1207:   24(fvec2) CompositeConstruct 175 175
+            1208:   24(fvec2) CompositeConstruct 283 283
+            1209:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 1206 1207 1208
+                              Store 1205(r036) 1209
             1211:          60 Load 63(inF0)
-            1212:          60 ExtInst 1(GLSL.std.450) 13(Sin) 1211
-                              Store 1210(r038) 1212
-            1213:          60 Load 63(inF0)
-            1214:          60 ExtInst 1(GLSL.std.450) 13(Sin) 1213
-                              Store 64(inF1) 1214
-            1215:          60 Load 63(inF0)
-            1216:          60 ExtInst 1(GLSL.std.450) 14(Cos) 1215
-                              Store 65(inF2) 1216
+            1212:          60 ExtInst 1(GLSL.std.450) 6(FSign) 1211
+                              Store 1210(r037) 1212
+            1214:          60 Load 63(inF0)
+            1215:          60 ExtInst 1(GLSL.std.450) 13(Sin) 1214
+                              Store 1213(r038) 1215
+            1216:          60 Load 63(inF0)
+            1217:          60 ExtInst 1(GLSL.std.450) 13(Sin) 1216
+                              Store 64(inF1) 1217
             1218:          60 Load 63(inF0)
-            1219:          60 ExtInst 1(GLSL.std.450) 19(Sinh) 1218
-                              Store 1217(r039) 1219
+            1219:          60 ExtInst 1(GLSL.std.450) 14(Cos) 1218
+                              Store 65(inF2) 1219
             1221:          60 Load 63(inF0)
-            1222:          60 Load 64(inF1)
-            1223:          60 Load 65(inF2)
-            1224:          60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1221 1222 1223
-                              Store 1220(r049) 1224
-            1226:          60 Load 63(inF0)
-            1227:          60 ExtInst 1(GLSL.std.450) 31(Sqrt) 1226
-                              Store 1225(r041) 1227
+            1222:          60 ExtInst 1(GLSL.std.450) 19(Sinh) 1221
+                              Store 1220(r039) 1222
+            1224:          60 Load 63(inF0)
+            1225:          60 Load 64(inF1)
+            1226:          60 Load 65(inF2)
+            1227:          60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1224 1225 1226
+                              Store 1223(r049) 1227
             1229:          60 Load 63(inF0)
-            1230:          60 Load 64(inF1)
-            1231:          60 ExtInst 1(GLSL.std.450) 48(Step) 1229 1230
-                              Store 1228(r042) 1231
-            1233:          60 Load 63(inF0)
-            1234:          60 ExtInst 1(GLSL.std.450) 15(Tan) 1233
-                              Store 1232(r043) 1234
+            1230:          60 ExtInst 1(GLSL.std.450) 31(Sqrt) 1229
+                              Store 1228(r041) 1230
+            1232:          60 Load 63(inF0)
+            1233:          60 Load 64(inF1)
+            1234:          60 ExtInst 1(GLSL.std.450) 48(Step) 1232 1233
+                              Store 1231(r042) 1234
             1236:          60 Load 63(inF0)
-            1237:          60 ExtInst 1(GLSL.std.450) 21(Tanh) 1236
-                              Store 1235(r044) 1237
-            1238:          60 Load 63(inF0)
-            1239:          60 Transpose 1238
+            1237:          60 ExtInst 1(GLSL.std.450) 15(Tan) 1236
+                              Store 1235(r043) 1237
+            1239:          60 Load 63(inF0)
+            1240:          60 ExtInst 1(GLSL.std.450) 21(Tanh) 1239
+                              Store 1238(r044) 1240
             1241:          60 Load 63(inF0)
-            1242:          60 ExtInst 1(GLSL.std.450) 3(Trunc) 1241
-                              Store 1240(r046) 1242
-                              ReturnValue 1244
+            1242:          60 Transpose 1241
+            1244:          60 Load 63(inF0)
+            1245:          60 ExtInst 1(GLSL.std.450) 3(Trunc) 1244
+                              Store 1243(r046) 1245
+                              ReturnValue 1247
                               FunctionEnd
 74(PixelShaderFunction3x3(mf33;mf33;mf33;):          68 Function None 70
         71(inF0):     69(ptr) FunctionParameter
         72(inF1):     69(ptr) FunctionParameter
         73(inF2):     69(ptr) FunctionParameter
               75:             Label
-      1247(r000):    132(ptr) Variable Function
-      1250(r001):     69(ptr) Variable Function
-      1255(r003):    132(ptr) Variable Function
-      1258(r004):     69(ptr) Variable Function
-      1261(r005):     69(ptr) Variable Function
-      1264(r006):     69(ptr) Variable Function
-      1268(r007):     69(ptr) Variable Function
-      1279(r008):     69(ptr) Variable Function
-      1284(r009):     69(ptr) Variable Function
-      1287(r010):     69(ptr) Variable Function
-      1290(r011):     69(ptr) Variable Function
-      1293(r012):     69(ptr) Variable Function
-      1296(r013):     69(ptr) Variable Function
-      1299(r014):     69(ptr) Variable Function
-      1302(r015):     69(ptr) Variable Function
-      1305(r016):     69(ptr) Variable Function
-      1308(r017):     69(ptr) Variable Function
-      1311(r018):      7(ptr) Variable Function
-      1314(r019):     69(ptr) Variable Function
-      1317(R020):     69(ptr) Variable Function
-      1320(r021):     69(ptr) Variable Function
-      1323(r022):     69(ptr) Variable Function
-      1336(r023):     69(ptr) Variable Function
-      1339(r024):     69(ptr) Variable Function
-      1345(r025):     69(ptr) Variable Function
-      1348(r026):     69(ptr) Variable Function
-     1352(r026a):     69(ptr) Variable Function
-      1357(r027):     69(ptr) Variable Function
-      1360(r028):     69(ptr) Variable Function
-      1364(r029):     69(ptr) Variable Function
-      1367(r030):     69(ptr) Variable Function
-      1371(r031):     69(ptr) Variable Function
-      1375(r032):     69(ptr) Variable Function
-      1379(r033):     69(ptr) Variable Function
-      1382(r034):     69(ptr) Variable Function
-      1385(r035):     69(ptr) Variable Function
-      1388(r036):     69(ptr) Variable Function
-      1393(r037):     69(ptr) Variable Function
-      1396(r038):     69(ptr) Variable Function
-      1403(r039):     69(ptr) Variable Function
-      1406(r049):     69(ptr) Variable Function
-      1411(r041):     69(ptr) Variable Function
-      1414(r042):     69(ptr) Variable Function
-      1418(r043):     69(ptr) Variable Function
-      1421(r044):     69(ptr) Variable Function
-      1426(r046):     69(ptr) Variable Function
-            1248:          68 Load 71(inF0)
-            1249:   131(bool) All 1248
-                              Store 1247(r000) 1249
+      1250(r000):    132(ptr) Variable Function
+      1253(r001):     69(ptr) Variable Function
+      1258(r003):    132(ptr) Variable Function
+      1261(r004):     69(ptr) Variable Function
+      1264(r005):     69(ptr) Variable Function
+      1267(r006):     69(ptr) Variable Function
+      1271(r007):     69(ptr) Variable Function
+      1282(r008):     69(ptr) Variable Function
+      1287(r009):     69(ptr) Variable Function
+      1290(r010):     69(ptr) Variable Function
+      1293(r011):     69(ptr) Variable Function
+      1296(r012):     69(ptr) Variable Function
+      1299(r013):     69(ptr) Variable Function
+      1302(r014):     69(ptr) Variable Function
+      1305(r015):     69(ptr) Variable Function
+      1308(r016):     69(ptr) Variable Function
+      1311(r017):     69(ptr) Variable Function
+      1314(r018):      7(ptr) Variable Function
+      1317(r019):     69(ptr) Variable Function
+      1320(R020):     69(ptr) Variable Function
+      1323(r021):     69(ptr) Variable Function
+      1326(r022):     69(ptr) Variable Function
+      1339(r023):     69(ptr) Variable Function
+      1342(r024):     69(ptr) Variable Function
+      1348(r025):     69(ptr) Variable Function
+      1351(r026):     69(ptr) Variable Function
+     1355(r026a):     69(ptr) Variable Function
+      1360(r027):     69(ptr) Variable Function
+      1363(r028):     69(ptr) Variable Function
+      1367(r029):     69(ptr) Variable Function
+      1370(r030):     69(ptr) Variable Function
+      1374(r031):     69(ptr) Variable Function
+      1378(r032):     69(ptr) Variable Function
+      1382(r033):     69(ptr) Variable Function
+      1385(r034):     69(ptr) Variable Function
+      1388(r035):     69(ptr) Variable Function
+      1391(r036):     69(ptr) Variable Function
+      1396(r037):     69(ptr) Variable Function
+      1399(r038):     69(ptr) Variable Function
+      1406(r039):     69(ptr) Variable Function
+      1409(r049):     69(ptr) Variable Function
+      1414(r041):     69(ptr) Variable Function
+      1417(r042):     69(ptr) Variable Function
+      1421(r043):     69(ptr) Variable Function
+      1424(r044):     69(ptr) Variable Function
+      1429(r046):     69(ptr) Variable Function
             1251:          68 Load 71(inF0)
-            1252:          68 ExtInst 1(GLSL.std.450) 4(FAbs) 1251
-                              Store 1250(r001) 1252
-            1253:          68 Load 71(inF0)
-            1254:          68 ExtInst 1(GLSL.std.450) 17(Acos) 1253
+            1252:   131(bool) All 1251
+                              Store 1250(r000) 1252
+            1254:          68 Load 71(inF0)
+            1255:          68 ExtInst 1(GLSL.std.450) 4(FAbs) 1254
+                              Store 1253(r001) 1255
             1256:          68 Load 71(inF0)
-            1257:   131(bool) Any 1256
-                              Store 1255(r003) 1257
+            1257:          68 ExtInst 1(GLSL.std.450) 17(Acos) 1256
             1259:          68 Load 71(inF0)
-            1260:          68 ExtInst 1(GLSL.std.450) 16(Asin) 1259
-                              Store 1258(r004) 1260
+            1260:   131(bool) Any 1259
+                              Store 1258(r003) 1260
             1262:          68 Load 71(inF0)
-            1263:          68 ExtInst 1(GLSL.std.450) 18(Atan) 1262
-                              Store 1261(r005) 1263
+            1263:          68 ExtInst 1(GLSL.std.450) 16(Asin) 1262
+                              Store 1261(r004) 1263
             1265:          68 Load 71(inF0)
-            1266:          68 Load 72(inF1)
-            1267:          68 ExtInst 1(GLSL.std.450) 25(Atan2) 1265 1266
-                              Store 1264(r006) 1267
-            1269:          68 Load 71(inF0)
-            1270:          68 ExtInst 1(GLSL.std.450) 9(Ceil) 1269
-                              Store 1268(r007) 1270
-            1271:          68 Load 71(inF0)
-            1274:        1273 FOrdLessThan 1271 1272
-            1275:   131(bool) Any 1274
-                              SelectionMerge 1277 None
-                              BranchConditional 1275 1276 1277
-            1276:               Label
+            1266:          68 ExtInst 1(GLSL.std.450) 18(Atan) 1265
+                              Store 1264(r005) 1266
+            1268:          68 Load 71(inF0)
+            1269:          68 Load 72(inF1)
+            1270:          68 ExtInst 1(GLSL.std.450) 25(Atan2) 1268 1269
+                              Store 1267(r006) 1270
+            1272:          68 Load 71(inF0)
+            1273:          68 ExtInst 1(GLSL.std.450) 9(Ceil) 1272
+                              Store 1271(r007) 1273
+            1274:          68 Load 71(inF0)
+            1277:        1276 FOrdLessThan 1274 1275
+            1278:   131(bool) Any 1277
+                              SelectionMerge 1280 None
+                              BranchConditional 1278 1279 1280
+            1279:               Label
                                 Kill
-            1277:             Label
-            1280:          68 Load 71(inF0)
-            1281:          68 Load 72(inF1)
-            1282:          68 Load 73(inF2)
-            1283:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 1280 1281 1282
-                              Store 1279(r008) 1283
-            1285:          68 Load 71(inF0)
-            1286:          68 ExtInst 1(GLSL.std.450) 14(Cos) 1285
-                              Store 1284(r009) 1286
+            1280:             Label
+            1283:          68 Load 71(inF0)
+            1284:          68 Load 72(inF1)
+            1285:          68 Load 73(inF2)
+            1286:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 1283 1284 1285
+                              Store 1282(r008) 1286
             1288:          68 Load 71(inF0)
-            1289:          68 ExtInst 1(GLSL.std.450) 20(Cosh) 1288
-                              Store 1287(r010) 1289
+            1289:          68 ExtInst 1(GLSL.std.450) 14(Cos) 1288
+                              Store 1287(r009) 1289
             1291:          68 Load 71(inF0)
-            1292:          68 DPdx 1291
-                              Store 1290(r011) 1292
+            1292:          68 ExtInst 1(GLSL.std.450) 20(Cosh) 1291
+                              Store 1290(r010) 1292
             1294:          68 Load 71(inF0)
-            1295:          68 DPdxCoarse 1294
-                              Store 1293(r012) 1295
+            1295:          68 DPdx 1294
+                              Store 1293(r011) 1295
             1297:          68 Load 71(inF0)
-            1298:          68 DPdxFine 1297
-                              Store 1296(r013) 1298
+            1298:          68 DPdxCoarse 1297
+                              Store 1296(r012) 1298
             1300:          68 Load 71(inF0)
-            1301:          68 DPdy 1300
-                              Store 1299(r014) 1301
+            1301:          68 DPdxFine 1300
+                              Store 1299(r013) 1301
             1303:          68 Load 71(inF0)
-            1304:          68 DPdyCoarse 1303
-                              Store 1302(r015) 1304
+            1304:          68 DPdy 1303
+                              Store 1302(r014) 1304
             1306:          68 Load 71(inF0)
-            1307:          68 DPdyFine 1306
-                              Store 1305(r016) 1307
+            1307:          68 DPdyCoarse 1306
+                              Store 1305(r015) 1307
             1309:          68 Load 71(inF0)
-            1310:          68 ExtInst 1(GLSL.std.450) 12(Degrees) 1309
-                              Store 1308(r017) 1310
+            1310:          68 DPdyFine 1309
+                              Store 1308(r016) 1310
             1312:          68 Load 71(inF0)
-            1313:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1312
-                              Store 1311(r018) 1313
+            1313:          68 ExtInst 1(GLSL.std.450) 12(Degrees) 1312
+                              Store 1311(r017) 1313
             1315:          68 Load 71(inF0)
-            1316:          68 ExtInst 1(GLSL.std.450) 27(Exp) 1315
-                              Store 1314(r019) 1316
+            1316:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1315
+                              Store 1314(r018) 1316
             1318:          68 Load 71(inF0)
-            1319:          68 ExtInst 1(GLSL.std.450) 29(Exp2) 1318
-                              Store 1317(R020) 1319
+            1319:          68 ExtInst 1(GLSL.std.450) 27(Exp) 1318
+                              Store 1317(r019) 1319
             1321:          68 Load 71(inF0)
-            1322:          68 ExtInst 1(GLSL.std.450) 8(Floor) 1321
-                              Store 1320(r021) 1322
+            1322:          68 ExtInst 1(GLSL.std.450) 29(Exp2) 1321
+                              Store 1320(R020) 1322
             1324:          68 Load 71(inF0)
-            1325:          68 Load 72(inF1)
-            1326:   36(fvec3) CompositeExtract 1324 0
-            1327:   36(fvec3) CompositeExtract 1325 0
-            1328:   36(fvec3) FMod 1326 1327
-            1329:   36(fvec3) CompositeExtract 1324 1
-            1330:   36(fvec3) CompositeExtract 1325 1
+            1325:          68 ExtInst 1(GLSL.std.450) 8(Floor) 1324
+                              Store 1323(r021) 1325
+            1327:          68 Load 71(inF0)
+            1328:          68 Load 72(inF1)
+            1329:   36(fvec3) CompositeExtract 1327 0
+            1330:   36(fvec3) CompositeExtract 1328 0
             1331:   36(fvec3) FMod 1329 1330
-            1332:   36(fvec3) CompositeExtract 1324 2
-            1333:   36(fvec3) CompositeExtract 1325 2
+            1332:   36(fvec3) CompositeExtract 1327 1
+            1333:   36(fvec3) CompositeExtract 1328 1
             1334:   36(fvec3) FMod 1332 1333
-            1335:          68 CompositeConstruct 1328 1331 1334
-                              Store 1323(r022) 1335
-            1337:          68 Load 71(inF0)
-            1338:          68 ExtInst 1(GLSL.std.450) 10(Fract) 1337
-                              Store 1336(r023) 1338
+            1335:   36(fvec3) CompositeExtract 1327 2
+            1336:   36(fvec3) CompositeExtract 1328 2
+            1337:   36(fvec3) FMod 1335 1336
+            1338:          68 CompositeConstruct 1331 1334 1337
+                              Store 1326(r022) 1338
             1340:          68 Load 71(inF0)
-            1342:1341(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1340
-            1343:  588(ivec3) CompositeExtract 1342 1
-                              Store 72(inF1) 1343
-            1344:          68 CompositeExtract 1342 0
-                              Store 1339(r024) 1344
-            1346:          68 Load 71(inF0)
-            1347:          68 Fwidth 1346
-                              Store 1345(r025) 1347
+            1341:          68 ExtInst 1(GLSL.std.450) 10(Fract) 1340
+                              Store 1339(r023) 1341
+            1343:          68 Load 71(inF0)
+            1345:1344(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1343
+            1346:  590(ivec3) CompositeExtract 1345 1
+                              Store 72(inF1) 1346
+            1347:          68 CompositeExtract 1345 0
+                              Store 1342(r024) 1347
             1349:          68 Load 71(inF0)
-            1350:          68 Load 72(inF1)
-            1351:          68 ExtInst 1(GLSL.std.450) 53(Ldexp) 1349 1350
-                              Store 1348(r026) 1351
-            1353:          68 Load 71(inF0)
-            1354:          68 Load 72(inF1)
-            1355:          68 Load 73(inF2)
-            1356:          68 ExtInst 1(GLSL.std.450) 46(FMix) 1353 1354 1355
-                              Store 1352(r026a) 1356
-            1358:          68 Load 71(inF0)
-            1359:          68 ExtInst 1(GLSL.std.450) 28(Log) 1358
-                              Store 1357(r027) 1359
+            1350:          68 Fwidth 1349
+                              Store 1348(r025) 1350
+            1352:          68 Load 71(inF0)
+            1353:          68 Load 72(inF1)
+            1354:          68 ExtInst 1(GLSL.std.450) 53(Ldexp) 1352 1353
+                              Store 1351(r026) 1354
+            1356:          68 Load 71(inF0)
+            1357:          68 Load 72(inF1)
+            1358:          68 Load 73(inF2)
+            1359:          68 ExtInst 1(GLSL.std.450) 46(FMix) 1356 1357 1358
+                              Store 1355(r026a) 1359
             1361:          68 Load 71(inF0)
-            1362:          68 ExtInst 1(GLSL.std.450) 30(Log2) 1361
-            1363:          68 MatrixTimesScalar 1362 263
-                              Store 1360(r028) 1363
-            1365:          68 Load 71(inF0)
-            1366:          68 ExtInst 1(GLSL.std.450) 30(Log2) 1365
-                              Store 1364(r029) 1366
+            1362:          68 ExtInst 1(GLSL.std.450) 28(Log) 1361
+                              Store 1360(r027) 1362
+            1364:          68 Load 71(inF0)
+            1365:          68 ExtInst 1(GLSL.std.450) 30(Log2) 1364
+            1366:          68 MatrixTimesScalar 1365 262
+                              Store 1363(r028) 1366
             1368:          68 Load 71(inF0)
-            1369:          68 Load 72(inF1)
-            1370:          68 ExtInst 1(GLSL.std.450) 40(FMax) 1368 1369
-                              Store 1367(r030) 1370
-            1372:          68 Load 71(inF0)
-            1373:          68 Load 72(inF1)
-            1374:          68 ExtInst 1(GLSL.std.450) 37(FMin) 1372 1373
-                              Store 1371(r031) 1374
-            1376:          68 Load 71(inF0)
-            1377:          68 Load 72(inF1)
-            1378:          68 ExtInst 1(GLSL.std.450) 26(Pow) 1376 1377
-                              Store 1375(r032) 1378
-            1380:          68 Load 71(inF0)
-            1381:          68 ExtInst 1(GLSL.std.450) 11(Radians) 1380
-                              Store 1379(r033) 1381
+            1369:          68 ExtInst 1(GLSL.std.450) 30(Log2) 1368
+                              Store 1367(r029) 1369
+            1371:          68 Load 71(inF0)
+            1372:          68 Load 72(inF1)
+            1373:          68 ExtInst 1(GLSL.std.450) 40(FMax) 1371 1372
+                              Store 1370(r030) 1373
+            1375:          68 Load 71(inF0)
+            1376:          68 Load 72(inF1)
+            1377:          68 ExtInst 1(GLSL.std.450) 37(FMin) 1375 1376
+                              Store 1374(r031) 1377
+            1379:          68 Load 71(inF0)
+            1380:          68 Load 72(inF1)
+            1381:          68 ExtInst 1(GLSL.std.450) 26(Pow) 1379 1380
+                              Store 1378(r032) 1381
             1383:          68 Load 71(inF0)
-            1384:          68 ExtInst 1(GLSL.std.450) 2(RoundEven) 1383
-                              Store 1382(r034) 1384
+            1384:          68 ExtInst 1(GLSL.std.450) 11(Radians) 1383
+                              Store 1382(r033) 1384
             1386:          68 Load 71(inF0)
-            1387:          68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1386
-                              Store 1385(r035) 1387
+            1387:          68 ExtInst 1(GLSL.std.450) 2(RoundEven) 1386
+                              Store 1385(r034) 1387
             1389:          68 Load 71(inF0)
-            1390:   36(fvec3) CompositeConstruct 175 175 175
-            1391:   36(fvec3) CompositeConstruct 284 284 284
-            1392:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 1389 1390 1391
-                              Store 1388(r036) 1392
-            1394:          68 Load 71(inF0)
-            1395:          68 ExtInst 1(GLSL.std.450) 6(FSign) 1394
-                              Store 1393(r037) 1395
+            1390:          68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1389
+                              Store 1388(r035) 1390
+            1392:          68 Load 71(inF0)
+            1393:   36(fvec3) CompositeConstruct 175 175 175
+            1394:   36(fvec3) CompositeConstruct 283 283 283
+            1395:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 1392 1393 1394
+                              Store 1391(r036) 1395
             1397:          68 Load 71(inF0)
-            1398:          68 ExtInst 1(GLSL.std.450) 13(Sin) 1397
-                              Store 1396(r038) 1398
-            1399:          68 Load 71(inF0)
-            1400:          68 ExtInst 1(GLSL.std.450) 13(Sin) 1399
-                              Store 72(inF1) 1400
-            1401:          68 Load 71(inF0)
-            1402:          68 ExtInst 1(GLSL.std.450) 14(Cos) 1401
-                              Store 73(inF2) 1402
+            1398:          68 ExtInst 1(GLSL.std.450) 6(FSign) 1397
+                              Store 1396(r037) 1398
+            1400:          68 Load 71(inF0)
+            1401:          68 ExtInst 1(GLSL.std.450) 13(Sin) 1400
+                              Store 1399(r038) 1401
+            1402:          68 Load 71(inF0)
+            1403:          68 ExtInst 1(GLSL.std.450) 13(Sin) 1402
+                              Store 72(inF1) 1403
             1404:          68 Load 71(inF0)
-            1405:          68 ExtInst 1(GLSL.std.450) 19(Sinh) 1404
-                              Store 1403(r039) 1405
+            1405:          68 ExtInst 1(GLSL.std.450) 14(Cos) 1404
+                              Store 73(inF2) 1405
             1407:          68 Load 71(inF0)
-            1408:          68 Load 72(inF1)
-            1409:          68 Load 73(inF2)
-            1410:          68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1407 1408 1409
-                              Store 1406(r049) 1410
-            1412:          68 Load 71(inF0)
-            1413:          68 ExtInst 1(GLSL.std.450) 31(Sqrt) 1412
-                              Store 1411(r041) 1413
+            1408:          68 ExtInst 1(GLSL.std.450) 19(Sinh) 1407
+                              Store 1406(r039) 1408
+            1410:          68 Load 71(inF0)
+            1411:          68 Load 72(inF1)
+            1412:          68 Load 73(inF2)
+            1413:          68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1410 1411 1412
+                              Store 1409(r049) 1413
             1415:          68 Load 71(inF0)
-            1416:          68 Load 72(inF1)
-            1417:          68 ExtInst 1(GLSL.std.450) 48(Step) 1415 1416
-                              Store 1414(r042) 1417
-            1419:          68 Load 71(inF0)
-            1420:          68 ExtInst 1(GLSL.std.450) 15(Tan) 1419
-                              Store 1418(r043) 1420
+            1416:          68 ExtInst 1(GLSL.std.450) 31(Sqrt) 1415
+                              Store 1414(r041) 1416
+            1418:          68 Load 71(inF0)
+            1419:          68 Load 72(inF1)
+            1420:          68 ExtInst 1(GLSL.std.450) 48(Step) 1418 1419
+                              Store 1417(r042) 1420
             1422:          68 Load 71(inF0)
-            1423:          68 ExtInst 1(GLSL.std.450) 21(Tanh) 1422
-                              Store 1421(r044) 1423
-            1424:          68 Load 71(inF0)
-            1425:          68 Transpose 1424
+            1423:          68 ExtInst 1(GLSL.std.450) 15(Tan) 1422
+                              Store 1421(r043) 1423
+            1425:          68 Load 71(inF0)
+            1426:          68 ExtInst 1(GLSL.std.450) 21(Tanh) 1425
+                              Store 1424(r044) 1426
             1427:          68 Load 71(inF0)
-            1428:          68 ExtInst 1(GLSL.std.450) 3(Trunc) 1427
-                              Store 1426(r046) 1428
-                              ReturnValue 1430
+            1428:          68 Transpose 1427
+            1430:          68 Load 71(inF0)
+            1431:          68 ExtInst 1(GLSL.std.450) 3(Trunc) 1430
+                              Store 1429(r046) 1431
+                              ReturnValue 1433
                               FunctionEnd
 82(PixelShaderFunction4x4(mf44;mf44;mf44;):          76 Function None 78
         79(inF0):     77(ptr) FunctionParameter
         80(inF1):     77(ptr) FunctionParameter
         81(inF2):     77(ptr) FunctionParameter
               83:             Label
-      1433(r000):    132(ptr) Variable Function
-      1436(r001):     77(ptr) Variable Function
-      1441(r003):    132(ptr) Variable Function
-      1444(r004):     77(ptr) Variable Function
-      1447(r005):     77(ptr) Variable Function
-      1450(r006):     77(ptr) Variable Function
-      1454(r007):     77(ptr) Variable Function
-      1465(r008):     77(ptr) Variable Function
-      1470(r009):     77(ptr) Variable Function
-      1473(r010):     77(ptr) Variable Function
-      1476(r011):     77(ptr) Variable Function
-      1479(r012):     77(ptr) Variable Function
-      1482(r013):     77(ptr) Variable Function
-      1485(r014):     77(ptr) Variable Function
-      1488(r015):     77(ptr) Variable Function
-      1491(r016):     77(ptr) Variable Function
-      1494(r017):     77(ptr) Variable Function
-      1497(r018):      7(ptr) Variable Function
-      1500(r019):     77(ptr) Variable Function
-      1503(R020):     77(ptr) Variable Function
-      1506(r021):     77(ptr) Variable Function
-      1509(r022):     77(ptr) Variable Function
-      1525(r023):     77(ptr) Variable Function
-      1528(r024):     77(ptr) Variable Function
-      1534(r025):     77(ptr) Variable Function
-      1537(r026):     77(ptr) Variable Function
-     1541(r026a):     77(ptr) Variable Function
-      1546(r027):     77(ptr) Variable Function
-      1549(r028):     77(ptr) Variable Function
-      1553(r029):     77(ptr) Variable Function
-      1556(r030):     77(ptr) Variable Function
-      1560(r031):     77(ptr) Variable Function
-      1564(r032):     77(ptr) Variable Function
-      1568(r033):     77(ptr) Variable Function
-      1571(r034):     77(ptr) Variable Function
-      1574(r035):     77(ptr) Variable Function
-      1577(r036):     77(ptr) Variable Function
-      1582(r037):     77(ptr) Variable Function
-      1585(r038):     77(ptr) Variable Function
-      1592(r039):     77(ptr) Variable Function
-      1595(r049):     77(ptr) Variable Function
-      1600(r041):     77(ptr) Variable Function
-      1603(r042):     77(ptr) Variable Function
-      1607(r043):     77(ptr) Variable Function
-      1610(r044):     77(ptr) Variable Function
-      1615(r046):     77(ptr) Variable Function
-            1434:          76 Load 79(inF0)
-            1435:   131(bool) All 1434
-                              Store 1433(r000) 1435
+      1436(r000):    132(ptr) Variable Function
+      1439(r001):     77(ptr) Variable Function
+      1444(r003):    132(ptr) Variable Function
+      1447(r004):     77(ptr) Variable Function
+      1450(r005):     77(ptr) Variable Function
+      1453(r006):     77(ptr) Variable Function
+      1457(r007):     77(ptr) Variable Function
+      1468(r008):     77(ptr) Variable Function
+      1473(r009):     77(ptr) Variable Function
+      1476(r010):     77(ptr) Variable Function
+      1479(r011):     77(ptr) Variable Function
+      1482(r012):     77(ptr) Variable Function
+      1485(r013):     77(ptr) Variable Function
+      1488(r014):     77(ptr) Variable Function
+      1491(r015):     77(ptr) Variable Function
+      1494(r016):     77(ptr) Variable Function
+      1497(r017):     77(ptr) Variable Function
+      1500(r018):      7(ptr) Variable Function
+      1503(r019):     77(ptr) Variable Function
+      1506(R020):     77(ptr) Variable Function
+      1509(r021):     77(ptr) Variable Function
+      1512(r022):     77(ptr) Variable Function
+      1528(r023):     77(ptr) Variable Function
+      1531(r024):     77(ptr) Variable Function
+      1537(r025):     77(ptr) Variable Function
+      1540(r026):     77(ptr) Variable Function
+     1544(r026a):     77(ptr) Variable Function
+      1549(r027):     77(ptr) Variable Function
+      1552(r028):     77(ptr) Variable Function
+      1556(r029):     77(ptr) Variable Function
+      1559(r030):     77(ptr) Variable Function
+      1563(r031):     77(ptr) Variable Function
+      1567(r032):     77(ptr) Variable Function
+      1571(r033):     77(ptr) Variable Function
+      1574(r034):     77(ptr) Variable Function
+      1577(r035):     77(ptr) Variable Function
+      1580(r036):     77(ptr) Variable Function
+      1585(r037):     77(ptr) Variable Function
+      1588(r038):     77(ptr) Variable Function
+      1595(r039):     77(ptr) Variable Function
+      1598(r049):     77(ptr) Variable Function
+      1603(r041):     77(ptr) Variable Function
+      1606(r042):     77(ptr) Variable Function
+      1610(r043):     77(ptr) Variable Function
+      1613(r044):     77(ptr) Variable Function
+      1618(r046):     77(ptr) Variable Function
             1437:          76 Load 79(inF0)
-            1438:          76 ExtInst 1(GLSL.std.450) 4(FAbs) 1437
-                              Store 1436(r001) 1438
-            1439:          76 Load 79(inF0)
-            1440:          76 ExtInst 1(GLSL.std.450) 17(Acos) 1439
+            1438:   131(bool) All 1437
+                              Store 1436(r000) 1438
+            1440:          76 Load 79(inF0)
+            1441:          76 ExtInst 1(GLSL.std.450) 4(FAbs) 1440
+                              Store 1439(r001) 1441
             1442:          76 Load 79(inF0)
-            1443:   131(bool) Any 1442
-                              Store 1441(r003) 1443
+            1443:          76 ExtInst 1(GLSL.std.450) 17(Acos) 1442
             1445:          76 Load 79(inF0)
-            1446:          76 ExtInst 1(GLSL.std.450) 16(Asin) 1445
-                              Store 1444(r004) 1446
+            1446:   131(bool) Any 1445
+                              Store 1444(r003) 1446
             1448:          76 Load 79(inF0)
-            1449:          76 ExtInst 1(GLSL.std.450) 18(Atan) 1448
-                              Store 1447(r005) 1449
+            1449:          76 ExtInst 1(GLSL.std.450) 16(Asin) 1448
+                              Store 1447(r004) 1449
             1451:          76 Load 79(inF0)
-            1452:          76 Load 80(inF1)
-            1453:          76 ExtInst 1(GLSL.std.450) 25(Atan2) 1451 1452
-                              Store 1450(r006) 1453
-            1455:          76 Load 79(inF0)
-            1456:          76 ExtInst 1(GLSL.std.450) 9(Ceil) 1455
-                              Store 1454(r007) 1456
-            1457:          76 Load 79(inF0)
-            1460:        1459 FOrdLessThan 1457 1458
-            1461:   131(bool) Any 1460
-                              SelectionMerge 1463 None
-                              BranchConditional 1461 1462 1463
-            1462:               Label
+            1452:          76 ExtInst 1(GLSL.std.450) 18(Atan) 1451
+                              Store 1450(r005) 1452
+            1454:          76 Load 79(inF0)
+            1455:          76 Load 80(inF1)
+            1456:          76 ExtInst 1(GLSL.std.450) 25(Atan2) 1454 1455
+                              Store 1453(r006) 1456
+            1458:          76 Load 79(inF0)
+            1459:          76 ExtInst 1(GLSL.std.450) 9(Ceil) 1458
+                              Store 1457(r007) 1459
+            1460:          76 Load 79(inF0)
+            1463:        1462 FOrdLessThan 1460 1461
+            1464:   131(bool) Any 1463
+                              SelectionMerge 1466 None
+                              BranchConditional 1464 1465 1466
+            1465:               Label
                                 Kill
-            1463:             Label
-            1466:          76 Load 79(inF0)
-            1467:          76 Load 80(inF1)
-            1468:          76 Load 81(inF2)
-            1469:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1466 1467 1468
-                              Store 1465(r008) 1469
-            1471:          76 Load 79(inF0)
-            1472:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1471
-                              Store 1470(r009) 1472
+            1466:             Label
+            1469:          76 Load 79(inF0)
+            1470:          76 Load 80(inF1)
+            1471:          76 Load 81(inF2)
+            1472:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1469 1470 1471
+                              Store 1468(r008) 1472
             1474:          76 Load 79(inF0)
-            1475:          76 ExtInst 1(GLSL.std.450) 20(Cosh) 1474
-                              Store 1473(r010) 1475
+            1475:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1474
+                              Store 1473(r009) 1475
             1477:          76 Load 79(inF0)
-            1478:          76 DPdx 1477
-                              Store 1476(r011) 1478
+            1478:          76 ExtInst 1(GLSL.std.450) 20(Cosh) 1477
+                              Store 1476(r010) 1478
             1480:          76 Load 79(inF0)
-            1481:          76 DPdxCoarse 1480
-                              Store 1479(r012) 1481
+            1481:          76 DPdx 1480
+                              Store 1479(r011) 1481
             1483:          76 Load 79(inF0)
-            1484:          76 DPdxFine 1483
-                              Store 1482(r013) 1484
+            1484:          76 DPdxCoarse 1483
+                              Store 1482(r012) 1484
             1486:          76 Load 79(inF0)
-            1487:          76 DPdy 1486
-                              Store 1485(r014) 1487
+            1487:          76 DPdxFine 1486
+                              Store 1485(r013) 1487
             1489:          76 Load 79(inF0)
-            1490:          76 DPdyCoarse 1489
-                              Store 1488(r015) 1490
+            1490:          76 DPdy 1489
+                              Store 1488(r014) 1490
             1492:          76 Load 79(inF0)
-            1493:          76 DPdyFine 1492
-                              Store 1491(r016) 1493
+            1493:          76 DPdyCoarse 1492
+                              Store 1491(r015) 1493
             1495:          76 Load 79(inF0)
-            1496:          76 ExtInst 1(GLSL.std.450) 12(Degrees) 1495
-                              Store 1494(r017) 1496
+            1496:          76 DPdyFine 1495
+                              Store 1494(r016) 1496
             1498:          76 Load 79(inF0)
-            1499:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1498
-                              Store 1497(r018) 1499
+            1499:          76 ExtInst 1(GLSL.std.450) 12(Degrees) 1498
+                              Store 1497(r017) 1499
             1501:          76 Load 79(inF0)
-            1502:          76 ExtInst 1(GLSL.std.450) 27(Exp) 1501
-                              Store 1500(r019) 1502
+            1502:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1501
+                              Store 1500(r018) 1502
             1504:          76 Load 79(inF0)
-            1505:          76 ExtInst 1(GLSL.std.450) 29(Exp2) 1504
-                              Store 1503(R020) 1505
+            1505:          76 ExtInst 1(GLSL.std.450) 27(Exp) 1504
+                              Store 1503(r019) 1505
             1507:          76 Load 79(inF0)
-            1508:          76 ExtInst 1(GLSL.std.450) 8(Floor) 1507
-                              Store 1506(r021) 1508
+            1508:          76 ExtInst 1(GLSL.std.450) 29(Exp2) 1507
+                              Store 1506(R020) 1508
             1510:          76 Load 79(inF0)
-            1511:          76 Load 80(inF1)
-            1512:   48(fvec4) CompositeExtract 1510 0
-            1513:   48(fvec4) CompositeExtract 1511 0
-            1514:   48(fvec4) FMod 1512 1513
-            1515:   48(fvec4) CompositeExtract 1510 1
-            1516:   48(fvec4) CompositeExtract 1511 1
+            1511:          76 ExtInst 1(GLSL.std.450) 8(Floor) 1510
+                              Store 1509(r021) 1511
+            1513:          76 Load 79(inF0)
+            1514:          76 Load 80(inF1)
+            1515:   48(fvec4) CompositeExtract 1513 0
+            1516:   48(fvec4) CompositeExtract 1514 0
             1517:   48(fvec4) FMod 1515 1516
-            1518:   48(fvec4) CompositeExtract 1510 2
-            1519:   48(fvec4) CompositeExtract 1511 2
+            1518:   48(fvec4) CompositeExtract 1513 1
+            1519:   48(fvec4) CompositeExtract 1514 1
             1520:   48(fvec4) FMod 1518 1519
-            1521:   48(fvec4) CompositeExtract 1510 3
-            1522:   48(fvec4) CompositeExtract 1511 3
+            1521:   48(fvec4) CompositeExtract 1513 2
+            1522:   48(fvec4) CompositeExtract 1514 2
             1523:   48(fvec4) FMod 1521 1522
-            1524:          76 CompositeConstruct 1514 1517 1520 1523
-                              Store 1509(r022) 1524
-            1526:          76 Load 79(inF0)
-            1527:          76 ExtInst 1(GLSL.std.450) 10(Fract) 1526
-                              Store 1525(r023) 1527
+            1524:   48(fvec4) CompositeExtract 1513 3
+            1525:   48(fvec4) CompositeExtract 1514 3
+            1526:   48(fvec4) FMod 1524 1525
+            1527:          76 CompositeConstruct 1517 1520 1523 1526
+                              Store 1512(r022) 1527
             1529:          76 Load 79(inF0)
-            1531:1530(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1529
-            1532:  833(ivec4) CompositeExtract 1531 1
-                              Store 80(inF1) 1532
-            1533:          76 CompositeExtract 1531 0
-                              Store 1528(r024) 1533
-            1535:          76 Load 79(inF0)
-            1536:          76 Fwidth 1535
-                              Store 1534(r025) 1536
+            1530:          76 ExtInst 1(GLSL.std.450) 10(Fract) 1529
+                              Store 1528(r023) 1530
+            1532:          76 Load 79(inF0)
+            1534:1533(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1532
+            1535:  836(ivec4) CompositeExtract 1534 1
+                              Store 80(inF1) 1535
+            1536:          76 CompositeExtract 1534 0
+                              Store 1531(r024) 1536
             1538:          76 Load 79(inF0)
-            1539:          76 Load 80(inF1)
-            1540:          76 ExtInst 1(GLSL.std.450) 53(Ldexp) 1538 1539
-                              Store 1537(r026) 1540
-            1542:          76 Load 79(inF0)
-            1543:          76 Load 80(inF1)
-            1544:          76 Load 81(inF2)
-            1545:          76 ExtInst 1(GLSL.std.450) 46(FMix) 1542 1543 1544
-                              Store 1541(r026a) 1545
-            1547:          76 Load 79(inF0)
-            1548:          76 ExtInst 1(GLSL.std.450) 28(Log) 1547
-                              Store 1546(r027) 1548
+            1539:          76 Fwidth 1538
+                              Store 1537(r025) 1539
+            1541:          76 Load 79(inF0)
+            1542:          76 Load 80(inF1)
+            1543:          76 ExtInst 1(GLSL.std.450) 53(Ldexp) 1541 1542
+                              Store 1540(r026) 1543
+            1545:          76 Load 79(inF0)
+            1546:          76 Load 80(inF1)
+            1547:          76 Load 81(inF2)
+            1548:          76 ExtInst 1(GLSL.std.450) 46(FMix) 1545 1546 1547
+                              Store 1544(r026a) 1548
             1550:          76 Load 79(inF0)
-            1551:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1550
-            1552:          76 MatrixTimesScalar 1551 263
-                              Store 1549(r028) 1552
-            1554:          76 Load 79(inF0)
-            1555:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1554
-                              Store 1553(r029) 1555
+            1551:          76 ExtInst 1(GLSL.std.450) 28(Log) 1550
+                              Store 1549(r027) 1551
+            1553:          76 Load 79(inF0)
+            1554:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1553
+            1555:          76 MatrixTimesScalar 1554 262
+                              Store 1552(r028) 1555
             1557:          76 Load 79(inF0)
-            1558:          76 Load 80(inF1)
-            1559:          76 ExtInst 1(GLSL.std.450) 40(FMax) 1557 1558
-                              Store 1556(r030) 1559
-            1561:          76 Load 79(inF0)
-            1562:          76 Load 80(inF1)
-            1563:          76 ExtInst 1(GLSL.std.450) 37(FMin) 1561 1562
-                              Store 1560(r031) 1563
-            1565:          76 Load 79(inF0)
-            1566:          76 Load 80(inF1)
-            1567:          76 ExtInst 1(GLSL.std.450) 26(Pow) 1565 1566
-                              Store 1564(r032) 1567
-            1569:          76 Load 79(inF0)
-            1570:          76 ExtInst 1(GLSL.std.450) 11(Radians) 1569
-                              Store 1568(r033) 1570
+            1558:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1557
+                              Store 1556(r029) 1558
+            1560:          76 Load 79(inF0)
+            1561:          76 Load 80(inF1)
+            1562:          76 ExtInst 1(GLSL.std.450) 40(FMax) 1560 1561
+                              Store 1559(r030) 1562
+            1564:          76 Load 79(inF0)
+            1565:          76 Load 80(inF1)
+            1566:          76 ExtInst 1(GLSL.std.450) 37(FMin) 1564 1565
+                              Store 1563(r031) 1566
+            1568:          76 Load 79(inF0)
+            1569:          76 Load 80(inF1)
+            1570:          76 ExtInst 1(GLSL.std.450) 26(Pow) 1568 1569
+                              Store 1567(r032) 1570
             1572:          76 Load 79(inF0)
-            1573:          76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1572
-                              Store 1571(r034) 1573
+            1573:          76 ExtInst 1(GLSL.std.450) 11(Radians) 1572
+                              Store 1571(r033) 1573
             1575:          76 Load 79(inF0)
-            1576:          76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1575
-                              Store 1574(r035) 1576
+            1576:          76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1575
+                              Store 1574(r034) 1576
             1578:          76 Load 79(inF0)
-            1579:   48(fvec4) CompositeConstruct 175 175 175 175
-            1580:   48(fvec4) CompositeConstruct 284 284 284 284
-            1581:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1578 1579 1580
-                              Store 1577(r036) 1581
-            1583:          76 Load 79(inF0)
-            1584:          76 ExtInst 1(GLSL.std.450) 6(FSign) 1583
-                              Store 1582(r037) 1584
+            1579:          76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1578
+                              Store 1577(r035) 1579
+            1581:          76 Load 79(inF0)
+            1582:   48(fvec4) CompositeConstruct 175 175 175 175
+            1583:   48(fvec4) CompositeConstruct 283 283 283 283
+            1584:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1581 1582 1583
+                              Store 1580(r036) 1584
             1586:          76 Load 79(inF0)
-            1587:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1586
-                              Store 1585(r038) 1587
-            1588:          76 Load 79(inF0)
-            1589:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1588
-                              Store 80(inF1) 1589
-            1590:          76 Load 79(inF0)
-            1591:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1590
-                              Store 81(inF2) 1591
+            1587:          76 ExtInst 1(GLSL.std.450) 6(FSign) 1586
+                              Store 1585(r037) 1587
+            1589:          76 Load 79(inF0)
+            1590:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1589
+                              Store 1588(r038) 1590
+            1591:          76 Load 79(inF0)
+            1592:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1591
+                              Store 80(inF1) 1592
             1593:          76 Load 79(inF0)
-            1594:          76 ExtInst 1(GLSL.std.450) 19(Sinh) 1593
-                              Store 1592(r039) 1594
+            1594:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1593
+                              Store 81(inF2) 1594
             1596:          76 Load 79(inF0)
-            1597:          76 Load 80(inF1)
-            1598:          76 Load 81(inF2)
-            1599:          76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1596 1597 1598
-                              Store 1595(r049) 1599
-            1601:          76 Load 79(inF0)
-            1602:          76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1601
-                              Store 1600(r041) 1602
+            1597:          76 ExtInst 1(GLSL.std.450) 19(Sinh) 1596
+                              Store 1595(r039) 1597
+            1599:          76 Load 79(inF0)
+            1600:          76 Load 80(inF1)
+            1601:          76 Load 81(inF2)
+            1602:          76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1599 1600 1601
+                              Store 1598(r049) 1602
             1604:          76 Load 79(inF0)
-            1605:          76 Load 80(inF1)
-            1606:          76 ExtInst 1(GLSL.std.450) 48(Step) 1604 1605
-                              Store 1603(r042) 1606
-            1608:          76 Load 79(inF0)
-            1609:          76 ExtInst 1(GLSL.std.450) 15(Tan) 1608
-                              Store 1607(r043) 1609
+            1605:          76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1604
+                              Store 1603(r041) 1605
+            1607:          76 Load 79(inF0)
+            1608:          76 Load 80(inF1)
+            1609:          76 ExtInst 1(GLSL.std.450) 48(Step) 1607 1608
+                              Store 1606(r042) 1609
             1611:          76 Load 79(inF0)
-            1612:          76 ExtInst 1(GLSL.std.450) 21(Tanh) 1611
-                              Store 1610(r044) 1612
-            1613:          76 Load 79(inF0)
-            1614:          76 Transpose 1613
+            1612:          76 ExtInst 1(GLSL.std.450) 15(Tan) 1611
+                              Store 1610(r043) 1612
+            1614:          76 Load 79(inF0)
+            1615:          76 ExtInst 1(GLSL.std.450) 21(Tanh) 1614
+                              Store 1613(r044) 1615
             1616:          76 Load 79(inF0)
-            1617:          76 ExtInst 1(GLSL.std.450) 3(Trunc) 1616
-                              Store 1615(r046) 1617
-                              ReturnValue 1619
+            1617:          76 Transpose 1616
+            1619:          76 Load 79(inF0)
+            1620:          76 ExtInst 1(GLSL.std.450) 3(Trunc) 1619
+                              Store 1618(r046) 1620
+                              ReturnValue 1622
                               FunctionEnd
 91(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;):           2 Function None 84
         85(inF0):      7(ptr) FunctionParameter
@@ -8177,51 +8182,51 @@ gl_FragCoord origin is upper left
        89(inFM0):     61(ptr) FunctionParameter
        90(inFM1):     61(ptr) FunctionParameter
               92:             Label
-        1622(r0):      7(ptr) Variable Function
-        1626(r1):     25(ptr) Variable Function
-        1630(r2):     25(ptr) Variable Function
-        1634(r3):      7(ptr) Variable Function
-        1638(r4):     25(ptr) Variable Function
-        1642(r5):     25(ptr) Variable Function
-        1646(r6):     61(ptr) Variable Function
-        1650(r7):     61(ptr) Variable Function
-        1654(r8):     61(ptr) Variable Function
-            1623:    6(float) Load 86(inF1)
-            1624:    6(float) Load 85(inF0)
-            1625:    6(float) FMul 1623 1624
-                              Store 1622(r0) 1625
+        1625(r0):      7(ptr) Variable Function
+        1629(r1):     25(ptr) Variable Function
+        1633(r2):     25(ptr) Variable Function
+        1637(r3):      7(ptr) Variable Function
+        1641(r4):     25(ptr) Variable Function
+        1645(r5):     25(ptr) Variable Function
+        1649(r6):     61(ptr) Variable Function
+        1653(r7):     61(ptr) Variable Function
+        1657(r8):     61(ptr) Variable Function
+            1626:    6(float) Load 86(inF1)
             1627:    6(float) Load 85(inF0)
-            1628:   24(fvec2) Load 87(inFV0)
-            1629:   24(fvec2) VectorTimesScalar 1628 1627
-                              Store 1626(r1) 1629
+            1628:    6(float) FMul 1626 1627
+                              Store 1625(r0) 1628
+            1630:    6(float) Load 85(inF0)
             1631:   24(fvec2) Load 87(inFV0)
-            1632:    6(float) Load 85(inF0)
-            1633:   24(fvec2) VectorTimesScalar 1631 1632
-                              Store 1630(r2) 1633
-            1635:   24(fvec2) Load 87(inFV0)
-            1636:   24(fvec2) Load 88(inFV1)
-            1637:    6(float) Dot 1635 1636
-                              Store 1634(r3) 1637
-            1639:   24(fvec2) Load 87(inFV0)
-            1640:          60 Load 89(inFM0)
-            1641:   24(fvec2) VectorTimesMatrix 1639 1640
-                              Store 1638(r4) 1641
+            1632:   24(fvec2) VectorTimesScalar 1631 1630
+                              Store 1629(r1) 1632
+            1634:   24(fvec2) Load 87(inFV0)
+            1635:    6(float) Load 85(inF0)
+            1636:   24(fvec2) VectorTimesScalar 1634 1635
+                              Store 1633(r2) 1636
+            1638:   24(fvec2) Load 87(inFV0)
+            1639:   24(fvec2) Load 88(inFV1)
+            1640:    6(float) Dot 1638 1639
+                              Store 1637(r3) 1640
+            1642:   24(fvec2) Load 87(inFV0)
             1643:          60 Load 89(inFM0)
-            1644:   24(fvec2) Load 87(inFV0)
-            1645:   24(fvec2) MatrixTimesVector 1643 1644
-                              Store 1642(r5) 1645
-            1647:    6(float) Load 85(inF0)
-            1648:          60 Load 89(inFM0)
-            1649:          60 MatrixTimesScalar 1648 1647
-                              Store 1646(r6) 1649
+            1644:   24(fvec2) VectorTimesMatrix 1642 1643
+                              Store 1641(r4) 1644
+            1646:          60 Load 89(inFM0)
+            1647:   24(fvec2) Load 87(inFV0)
+            1648:   24(fvec2) MatrixTimesVector 1646 1647
+                              Store 1645(r5) 1648
+            1650:    6(float) Load 85(inF0)
             1651:          60 Load 89(inFM0)
-            1652:    6(float) Load 85(inF0)
-            1653:          60 MatrixTimesScalar 1651 1652
-                              Store 1650(r7) 1653
-            1655:          60 Load 90(inFM1)
-            1656:          60 Load 89(inFM0)
-            1657:          60 MatrixTimesMatrix 1655 1656
-                              Store 1654(r8) 1657
+            1652:          60 MatrixTimesScalar 1651 1650
+                              Store 1649(r6) 1652
+            1654:          60 Load 89(inFM0)
+            1655:    6(float) Load 85(inF0)
+            1656:          60 MatrixTimesScalar 1654 1655
+                              Store 1653(r7) 1656
+            1658:          60 Load 90(inFM1)
+            1659:          60 Load 89(inFM0)
+            1660:          60 MatrixTimesMatrix 1658 1659
+                              Store 1657(r8) 1660
                               Return
                               FunctionEnd
 100(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;):           2 Function None 93
@@ -8232,51 +8237,51 @@ gl_FragCoord origin is upper left
        98(inFM0):     69(ptr) FunctionParameter
        99(inFM1):     69(ptr) FunctionParameter
              101:             Label
-        1658(r0):      7(ptr) Variable Function
-        1662(r1):     37(ptr) Variable Function
-        1666(r2):     37(ptr) Variable Function
-        1670(r3):      7(ptr) Variable Function
-        1674(r4):     37(ptr) Variable Function
-        1678(r5):     37(ptr) Variable Function
-        1682(r6):     69(ptr) Variable Function
-        1686(r7):     69(ptr) Variable Function
-        1690(r8):     69(ptr) Variable Function
-            1659:    6(float) Load 95(inF1)
-            1660:    6(float) Load 94(inF0)
-            1661:    6(float) FMul 1659 1660
-                              Store 1658(r0) 1661
+        1661(r0):      7(ptr) Variable Function
+        1665(r1):     37(ptr) Variable Function
+        1669(r2):     37(ptr) Variable Function
+        1673(r3):      7(ptr) Variable Function
+        1677(r4):     37(ptr) Variable Function
+        1681(r5):     37(ptr) Variable Function
+        1685(r6):     69(ptr) Variable Function
+        1689(r7):     69(ptr) Variable Function
+        1693(r8):     69(ptr) Variable Function
+            1662:    6(float) Load 95(inF1)
             1663:    6(float) Load 94(inF0)
-            1664:   36(fvec3) Load 96(inFV0)
-            1665:   36(fvec3) VectorTimesScalar 1664 1663
-                              Store 1662(r1) 1665
+            1664:    6(float) FMul 1662 1663
+                              Store 1661(r0) 1664
+            1666:    6(float) Load 94(inF0)
             1667:   36(fvec3) Load 96(inFV0)
-            1668:    6(float) Load 94(inF0)
-            1669:   36(fvec3) VectorTimesScalar 1667 1668
-                              Store 1666(r2) 1669
-            1671:   36(fvec3) Load 96(inFV0)
-            1672:   36(fvec3) Load 97(inFV1)
-            1673:    6(float) Dot 1671 1672
-                              Store 1670(r3) 1673
-            1675:   36(fvec3) Load 96(inFV0)
-            1676:          68 Load 98(inFM0)
-            1677:   36(fvec3) VectorTimesMatrix 1675 1676
-                              Store 1674(r4) 1677
+            1668:   36(fvec3) VectorTimesScalar 1667 1666
+                              Store 1665(r1) 1668
+            1670:   36(fvec3) Load 96(inFV0)
+            1671:    6(float) Load 94(inF0)
+            1672:   36(fvec3) VectorTimesScalar 1670 1671
+                              Store 1669(r2) 1672
+            1674:   36(fvec3) Load 96(inFV0)
+            1675:   36(fvec3) Load 97(inFV1)
+            1676:    6(float) Dot 1674 1675
+                              Store 1673(r3) 1676
+            1678:   36(fvec3) Load 96(inFV0)
             1679:          68 Load 98(inFM0)
-            1680:   36(fvec3) Load 96(inFV0)
-            1681:   36(fvec3) MatrixTimesVector 1679 1680
-                              Store 1678(r5) 1681
-            1683:    6(float) Load 94(inF0)
-            1684:          68 Load 98(inFM0)
-            1685:          68 MatrixTimesScalar 1684 1683
-                              Store 1682(r6) 1685
+            1680:   36(fvec3) VectorTimesMatrix 1678 1679
+                              Store 1677(r4) 1680
+            1682:          68 Load 98(inFM0)
+            1683:   36(fvec3) Load 96(inFV0)
+            1684:   36(fvec3) MatrixTimesVector 1682 1683
+                              Store 1681(r5) 1684
+            1686:    6(float) Load 94(inF0)
             1687:          68 Load 98(inFM0)
-            1688:    6(float) Load 94(inF0)
-            1689:          68 MatrixTimesScalar 1687 1688
-                              Store 1686(r7) 1689
-            1691:          68 Load 99(inFM1)
-            1692:          68 Load 98(inFM0)
-            1693:          68 MatrixTimesMatrix 1691 1692
-                              Store 1690(r8) 1693
+            1688:          68 MatrixTimesScalar 1687 1686
+                              Store 1685(r6) 1688
+            1690:          68 Load 98(inFM0)
+            1691:    6(float) Load 94(inF0)
+            1692:          68 MatrixTimesScalar 1690 1691
+                              Store 1689(r7) 1692
+            1694:          68 Load 99(inFM1)
+            1695:          68 Load 98(inFM0)
+            1696:          68 MatrixTimesMatrix 1694 1695
+                              Store 1693(r8) 1696
                               Return
                               FunctionEnd
 109(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;):           2 Function None 102
@@ -8287,51 +8292,51 @@ gl_FragCoord origin is upper left
       107(inFM0):     77(ptr) FunctionParameter
       108(inFM1):     77(ptr) FunctionParameter
              110:             Label
-        1694(r0):      7(ptr) Variable Function
-        1698(r1):     49(ptr) Variable Function
-        1702(r2):     49(ptr) Variable Function
-        1706(r3):      7(ptr) Variable Function
-        1710(r4):     49(ptr) Variable Function
-        1714(r5):     49(ptr) Variable Function
-        1718(r6):     77(ptr) Variable Function
-        1722(r7):     77(ptr) Variable Function
-        1726(r8):     77(ptr) Variable Function
-            1695:    6(float) Load 104(inF1)
-            1696:    6(float) Load 103(inF0)
-            1697:    6(float) FMul 1695 1696
-                              Store 1694(r0) 1697
+        1697(r0):      7(ptr) Variable Function
+        1701(r1):     49(ptr) Variable Function
+        1705(r2):     49(ptr) Variable Function
+        1709(r3):      7(ptr) Variable Function
+        1713(r4):     49(ptr) Variable Function
+        1717(r5):     49(ptr) Variable Function
+        1721(r6):     77(ptr) Variable Function
+        1725(r7):     77(ptr) Variable Function
+        1729(r8):     77(ptr) Variable Function
+            1698:    6(float) Load 104(inF1)
             1699:    6(float) Load 103(inF0)
-            1700:   48(fvec4) Load 105(inFV0)
-            1701:   48(fvec4) VectorTimesScalar 1700 1699
-                              Store 1698(r1) 1701
+            1700:    6(float) FMul 1698 1699
+                              Store 1697(r0) 1700
+            1702:    6(float) Load 103(inF0)
             1703:   48(fvec4) Load 105(inFV0)
-            1704:    6(float) Load 103(inF0)
-            1705:   48(fvec4) VectorTimesScalar 1703 1704
-                              Store 1702(r2) 1705
-            1707:   48(fvec4) Load 105(inFV0)
-            1708:   48(fvec4) Load 106(inFV1)
-            1709:    6(float) Dot 1707 1708
-                              Store 1706(r3) 1709
-            1711:   48(fvec4) Load 105(inFV0)
-            1712:          76 Load 107(inFM0)
-            1713:   48(fvec4) VectorTimesMatrix 1711 1712
-                              Store 1710(r4) 1713
+            1704:   48(fvec4) VectorTimesScalar 1703 1702
+                              Store 1701(r1) 1704
+            1706:   48(fvec4) Load 105(inFV0)
+            1707:    6(float) Load 103(inF0)
+            1708:   48(fvec4) VectorTimesScalar 1706 1707
+                              Store 1705(r2) 1708
+            1710:   48(fvec4) Load 105(inFV0)
+            1711:   48(fvec4) Load 106(inFV1)
+            1712:    6(float) Dot 1710 1711
+                              Store 1709(r3) 1712
+            1714:   48(fvec4) Load 105(inFV0)
             1715:          76 Load 107(inFM0)
-            1716:   48(fvec4) Load 105(inFV0)
-            1717:   48(fvec4) MatrixTimesVector 1715 1716
-                              Store 1714(r5) 1717
-            1719:    6(float) Load 103(inF0)
-            1720:          76 Load 107(inFM0)
-            1721:          76 MatrixTimesScalar 1720 1719
-                              Store 1718(r6) 1721
+            1716:   48(fvec4) VectorTimesMatrix 1714 1715
+                              Store 1713(r4) 1716
+            1718:          76 Load 107(inFM0)
+            1719:   48(fvec4) Load 105(inFV0)
+            1720:   48(fvec4) MatrixTimesVector 1718 1719
+                              Store 1717(r5) 1720
+            1722:    6(float) Load 103(inF0)
             1723:          76 Load 107(inFM0)
-            1724:    6(float) Load 103(inF0)
-            1725:          76 MatrixTimesScalar 1723 1724
-                              Store 1722(r7) 1725
-            1727:          76 Load 108(inFM1)
-            1728:          76 Load 107(inFM0)
-            1729:          76 MatrixTimesMatrix 1727 1728
-                              Store 1726(r8) 1729
+            1724:          76 MatrixTimesScalar 1723 1722
+                              Store 1721(r6) 1724
+            1726:          76 Load 107(inFM0)
+            1727:    6(float) Load 103(inF0)
+            1728:          76 MatrixTimesScalar 1726 1727
+                              Store 1725(r7) 1728
+            1730:          76 Load 108(inFM1)
+            1731:          76 Load 107(inFM0)
+            1732:          76 MatrixTimesMatrix 1730 1731
+                              Store 1729(r8) 1732
                               Return
                               FunctionEnd
 129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;):           2 Function None 119
@@ -8345,90 +8350,90 @@ gl_FragCoord origin is upper left
     127(inFM3x4):    116(ptr) FunctionParameter
     128(inFM2x4):    118(ptr) FunctionParameter
              130:             Label
-       1730(r00):      7(ptr) Variable Function
-       1734(r01):     25(ptr) Variable Function
-       1738(r02):     37(ptr) Variable Function
-       1742(r03):     25(ptr) Variable Function
-       1746(r04):     37(ptr) Variable Function
-       1750(r05):      7(ptr) Variable Function
-       1754(r06):      7(ptr) Variable Function
-       1758(r07):     37(ptr) Variable Function
-       1762(r08):     25(ptr) Variable Function
-       1766(r09):     25(ptr) Variable Function
-       1770(r10):     37(ptr) Variable Function
-       1774(r11):    112(ptr) Variable Function
-       1778(r12):    114(ptr) Variable Function
-       1782(r13):     61(ptr) Variable Function
-       1786(r14):    112(ptr) Variable Function
-       1790(r15):    118(ptr) Variable Function
-       1794(r16):    116(ptr) Variable Function
-            1731:    6(float) Load 121(inF1)
-            1732:    6(float) Load 120(inF0)
-            1733:    6(float) FMul 1731 1732
-                              Store 1730(r00) 1733
+       1733(r00):      7(ptr) Variable Function
+       1737(r01):     25(ptr) Variable Function
+       1741(r02):     37(ptr) Variable Function
+       1745(r03):     25(ptr) Variable Function
+       1749(r04):     37(ptr) Variable Function
+       1753(r05):      7(ptr) Variable Function
+       1757(r06):      7(ptr) Variable Function
+       1761(r07):     37(ptr) Variable Function
+       1765(r08):     25(ptr) Variable Function
+       1769(r09):     25(ptr) Variable Function
+       1773(r10):     37(ptr) Variable Function
+       1777(r11):    112(ptr) Variable Function
+       1781(r12):    114(ptr) Variable Function
+       1785(r13):     61(ptr) Variable Function
+       1789(r14):    112(ptr) Variable Function
+       1793(r15):    118(ptr) Variable Function
+       1797(r16):    116(ptr) Variable Function
+            1734:    6(float) Load 121(inF1)
             1735:    6(float) Load 120(inF0)
-            1736:   24(fvec2) Load 122(inFV2)
-            1737:   24(fvec2) VectorTimesScalar 1736 1735
-                              Store 1734(r01) 1737
-            1739:    6(float) Load 120(inF0)
-            1740:   36(fvec3) Load 123(inFV3)
-            1741:   36(fvec3) VectorTimesScalar 1740 1739
-                              Store 1738(r02) 1741
-            1743:   24(fvec2) Load 122(inFV2)
-            1744:    6(float) Load 120(inF0)
-            1745:   24(fvec2) VectorTimesScalar 1743 1744
-                              Store 1742(r03) 1745
-            1747:   36(fvec3) Load 123(inFV3)
-            1748:    6(float) Load 120(inF0)
-            1749:   36(fvec3) VectorTimesScalar 1747 1748
-                              Store 1746(r04) 1749
-            1751:   24(fvec2) Load 122(inFV2)
-            1752:   24(fvec2) Load 122(inFV2)
-            1753:    6(float) Dot 1751 1752
-                              Store 1750(r05) 1753
-            1755:   36(fvec3) Load 123(inFV3)
-            1756:   36(fvec3) Load 123(inFV3)
-            1757:    6(float) Dot 1755 1756
-                              Store 1754(r06) 1757
-            1759:         111 Load 124(inFM2x3)
-            1760:   24(fvec2) Load 122(inFV2)
-            1761:   36(fvec3) MatrixTimesVector 1759 1760
-                              Store 1758(r07) 1761
-            1763:         113 Load 125(inFM3x2)
-            1764:   36(fvec3) Load 123(inFV3)
-            1765:   24(fvec2) MatrixTimesVector 1763 1764
-                              Store 1762(r08) 1765
+            1736:    6(float) FMul 1734 1735
+                              Store 1733(r00) 1736
+            1738:    6(float) Load 120(inF0)
+            1739:   24(fvec2) Load 122(inFV2)
+            1740:   24(fvec2) VectorTimesScalar 1739 1738
+                              Store 1737(r01) 1740
+            1742:    6(float) Load 120(inF0)
+            1743:   36(fvec3) Load 123(inFV3)
+            1744:   36(fvec3) VectorTimesScalar 1743 1742
+                              Store 1741(r02) 1744
+            1746:   24(fvec2) Load 122(inFV2)
+            1747:    6(float) Load 120(inF0)
+            1748:   24(fvec2) VectorTimesScalar 1746 1747
+                              Store 1745(r03) 1748
+            1750:   36(fvec3) Load 123(inFV3)
+            1751:    6(float) Load 120(inF0)
+            1752:   36(fvec3) VectorTimesScalar 1750 1751
+                              Store 1749(r04) 1752
+            1754:   24(fvec2) Load 122(inFV2)
+            1755:   24(fvec2) Load 122(inFV2)
+            1756:    6(float) Dot 1754 1755
+                              Store 1753(r05) 1756
+            1758:   36(fvec3) Load 123(inFV3)
+            1759:   36(fvec3) Load 123(inFV3)
+            1760:    6(float) Dot 1758 1759
+                              Store 1757(r06) 1760
+            1762:         111 Load 124(inFM2x3)
+            1763:   24(fvec2) Load 122(inFV2)
+            1764:   36(fvec3) MatrixTimesVector 1762 1763
+                              Store 1761(r07) 1764
+            1766:         113 Load 125(inFM3x2)
             1767:   36(fvec3) Load 123(inFV3)
-            1768:         111 Load 124(inFM2x3)
-            1769:   24(fvec2) VectorTimesMatrix 1767 1768
-                              Store 1766(r09) 1769
-            1771:   24(fvec2) Load 122(inFV2)
-            1772:         113 Load 125(inFM3x2)
-            1773:   36(fvec3) VectorTimesMatrix 1771 1772
-                              Store 1770(r10) 1773
-            1775:    6(float) Load 120(inF0)
-            1776:         111 Load 124(inFM2x3)
-            1777:         111 MatrixTimesScalar 1776 1775
-                              Store 1774(r11) 1777
-            1779:    6(float) Load 120(inF0)
-            1780:         113 Load 125(inFM3x2)
-            1781:         113 MatrixTimesScalar 1780 1779
-                              Store 1778(r12) 1781
+            1768:   24(fvec2) MatrixTimesVector 1766 1767
+                              Store 1765(r08) 1768
+            1770:   36(fvec3) Load 123(inFV3)
+            1771:         111 Load 124(inFM2x3)
+            1772:   24(fvec2) VectorTimesMatrix 1770 1771
+                              Store 1769(r09) 1772
+            1774:   24(fvec2) Load 122(inFV2)
+            1775:         113 Load 125(inFM3x2)
+            1776:   36(fvec3) VectorTimesMatrix 1774 1775
+                              Store 1773(r10) 1776
+            1778:    6(float) Load 120(inF0)
+            1779:         111 Load 124(inFM2x3)
+            1780:         111 MatrixTimesScalar 1779 1778
+                              Store 1777(r11) 1780
+            1782:    6(float) Load 120(inF0)
             1783:         113 Load 125(inFM3x2)
-            1784:         111 Load 124(inFM2x3)
-            1785:          60 MatrixTimesMatrix 1783 1784
-                              Store 1782(r13) 1785
-            1787:          68 Load 126(inFM3x3)
-            1788:         111 Load 124(inFM2x3)
-            1789:         111 MatrixTimesMatrix 1787 1788
-                              Store 1786(r14) 1789
-            1791:         115 Load 127(inFM3x4)
-            1792:         111 Load 124(inFM2x3)
-            1793:         117 MatrixTimesMatrix 1791 1792
-                              Store 1790(r15) 1793
-            1795:         117 Load 128(inFM2x4)
-            1796:         113 Load 125(inFM3x2)
-            1797:         115 MatrixTimesMatrix 1795 1796
-                              Store 1794(r16) 1797
+            1784:         113 MatrixTimesScalar 1783 1782
+                              Store 1781(r12) 1784
+            1786:         113 Load 125(inFM3x2)
+            1787:         111 Load 124(inFM2x3)
+            1788:          60 MatrixTimesMatrix 1786 1787
+                              Store 1785(r13) 1788
+            1790:          68 Load 126(inFM3x3)
+            1791:         111 Load 124(inFM2x3)
+            1792:         111 MatrixTimesMatrix 1790 1791
+                              Store 1789(r14) 1792
+            1794:         115 Load 127(inFM3x4)
+            1795:         111 Load 124(inFM2x3)
+            1796:         117 MatrixTimesMatrix 1794 1795
+                              Store 1793(r15) 1796
+            1798:         117 Load 128(inFM2x4)
+            1799:         113 Load 125(inFM3x2)
+            1800:         115 MatrixTimesMatrix 1798 1799
+                              Store 1797(r16) 1800
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
new file mode 100644 (file)
index 0000000..f5ba86b
--- /dev/null
@@ -0,0 +1,184 @@
+hlsl.intrinsics.promote.down.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15  Function Definition: main( (temp structure{temp 4-component vector of float color})
+0:15    Function Parameters: 
+0:?     Sequence
+0:16      Sequence
+0:16        move second child to first child (temp uint)
+0:16          'r00' (temp uint)
+0:16          bitCount (temp uint)
+0:16            Convert float to uint (temp uint)
+0:16              f: direct index for structure (layout(offset=8 ) uniform float)
+0:16                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2})
+0:16                Constant:
+0:16                  2 (const uint)
+0:17      Sequence
+0:17        move second child to first child (temp 2-component vector of uint)
+0:17          'r01' (temp 2-component vector of uint)
+0:17          bitFieldReverse (temp 2-component vector of uint)
+0:17            Convert float to uint (temp 2-component vector of uint)
+0:17              f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:17                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2})
+0:17                Constant:
+0:17                  6 (const uint)
+0:20      move second child to first child (temp 4-component vector of float)
+0:20        color: direct index for structure (temp 4-component vector of float)
+0:20          'ps_output' (temp structure{temp 4-component vector of float color})
+0:20          Constant:
+0:20            0 (const int)
+0:?         Constant:
+0:?           0.000000
+0:?           0.000000
+0:?           0.000000
+0:?           0.000000
+0:21      Sequence
+0:21        Sequence
+0:21          move second child to first child (temp 4-component vector of float)
+0:?             'color' (layout(location=0 ) out 4-component vector of float)
+0:21            color: direct index for structure (temp 4-component vector of float)
+0:21              'ps_output' (temp structure{temp 4-component vector of float color})
+0:21              Constant:
+0:21                0 (const int)
+0:21        Branch: Return
+0:?   Linker Objects
+0:?     'color' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2})
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15  Function Definition: main( (temp structure{temp 4-component vector of float color})
+0:15    Function Parameters: 
+0:?     Sequence
+0:16      Sequence
+0:16        move second child to first child (temp uint)
+0:16          'r00' (temp uint)
+0:16          bitCount (temp uint)
+0:16            Convert float to uint (temp uint)
+0:16              f: direct index for structure (layout(offset=8 ) uniform float)
+0:16                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2})
+0:16                Constant:
+0:16                  2 (const uint)
+0:17      Sequence
+0:17        move second child to first child (temp 2-component vector of uint)
+0:17          'r01' (temp 2-component vector of uint)
+0:17          bitFieldReverse (temp 2-component vector of uint)
+0:17            Convert float to uint (temp 2-component vector of uint)
+0:17              f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:17                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2})
+0:17                Constant:
+0:17                  6 (const uint)
+0:20      move second child to first child (temp 4-component vector of float)
+0:20        color: direct index for structure (temp 4-component vector of float)
+0:20          'ps_output' (temp structure{temp 4-component vector of float color})
+0:20          Constant:
+0:20            0 (const int)
+0:?         Constant:
+0:?           0.000000
+0:?           0.000000
+0:?           0.000000
+0:?           0.000000
+0:21      Sequence
+0:21        Sequence
+0:21          move second child to first child (temp 4-component vector of float)
+0:?             'color' (layout(location=0 ) out 4-component vector of float)
+0:21            color: direct index for structure (temp 4-component vector of float)
+0:21              'ps_output' (temp structure{temp 4-component vector of float color})
+0:21              Constant:
+0:21                0 (const int)
+0:21        Branch: Return
+0:?   Linker Objects
+0:?     'color' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2})
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 45
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 41
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 8  "r00"
+                              Name 14  "$Global"
+                              MemberName 14($Global) 0  "i"
+                              MemberName 14($Global) 1  "u"
+                              MemberName 14($Global) 2  "f"
+                              MemberName 14($Global) 3  "b"
+                              MemberName 14($Global) 4  "i2"
+                              MemberName 14($Global) 5  "u2"
+                              MemberName 14($Global) 6  "f2"
+                              MemberName 14($Global) 7  "b2"
+                              Name 16  ""
+                              Name 24  "r01"
+                              Name 32  "PS_OUTPUT"
+                              MemberName 32(PS_OUTPUT) 0  "color"
+                              Name 34  "ps_output"
+                              Name 41  "color"
+                              MemberDecorate 14($Global) 0 Offset 0
+                              MemberDecorate 14($Global) 1 Offset 4
+                              MemberDecorate 14($Global) 2 Offset 8
+                              MemberDecorate 14($Global) 3 Offset 12
+                              MemberDecorate 14($Global) 4 Offset 16
+                              MemberDecorate 14($Global) 5 Offset 24
+                              MemberDecorate 14($Global) 6 Offset 32
+                              MemberDecorate 14($Global) 7 Offset 40
+                              Decorate 14($Global) Block
+                              Decorate 16 DescriptorSet 0
+                              Decorate 41(color) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypePointer Function 6(int)
+               9:             TypeInt 32 1
+              10:             TypeFloat 32
+              11:             TypeVector 9(int) 2
+              12:             TypeVector 6(int) 2
+              13:             TypeVector 10(float) 2
+     14($Global):             TypeStruct 9(int) 6(int) 10(float) 6(int) 11(ivec2) 12(ivec2) 13(fvec2) 12(ivec2)
+              15:             TypePointer Uniform 14($Global)
+              16:     15(ptr) Variable Uniform
+              17:      9(int) Constant 2
+              18:             TypePointer Uniform 10(float)
+              23:             TypePointer Function 12(ivec2)
+              25:      9(int) Constant 6
+              26:             TypePointer Uniform 13(fvec2)
+              31:             TypeVector 10(float) 4
+   32(PS_OUTPUT):             TypeStruct 31(fvec4)
+              33:             TypePointer Function 32(PS_OUTPUT)
+              35:      9(int) Constant 0
+              36:   10(float) Constant 0
+              37:   31(fvec4) ConstantComposite 36 36 36 36
+              38:             TypePointer Function 31(fvec4)
+              40:             TypePointer Output 31(fvec4)
+       41(color):     40(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+          8(r00):      7(ptr) Variable Function
+         24(r01):     23(ptr) Variable Function
+   34(ps_output):     33(ptr) Variable Function
+              19:     18(ptr) AccessChain 16 17
+              20:   10(float) Load 19
+              21:      6(int) ConvertFToU 20
+              22:      6(int) BitCount 21
+                              Store 8(r00) 22
+              27:     26(ptr) AccessChain 16 25
+              28:   13(fvec2) Load 27
+              29:   12(ivec2) ConvertFToU 28
+              30:   12(ivec2) BitReverse 29
+                              Store 24(r01) 30
+              39:     38(ptr) AccessChain 34(ps_output) 35
+                              Store 39 37
+              42:     38(ptr) AccessChain 34(ps_output) 35
+              43:   31(fvec4) Load 42
+                              Store 41(color) 43
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.promote.frag.out b/Test/baseResults/hlsl.intrinsics.promote.frag.out
new file mode 100644 (file)
index 0000000..82b9e68
--- /dev/null
@@ -0,0 +1,1313 @@
+hlsl.intrinsics.promote.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float color})
+0:20    Function Parameters: 
+0:?     Sequence
+0:23      Sequence
+0:23        move second child to first child (temp float)
+0:23          'r00' (temp float)
+0:23          max (temp float)
+0:23            Convert bool to float (temp float)
+0:23              b: direct index for structure (layout(offset=12 ) uniform bool)
+0:23                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:23                Constant:
+0:23                  3 (const uint)
+0:23            f: direct index for structure (layout(offset=8 ) uniform float)
+0:23              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:23              Constant:
+0:23                2 (const uint)
+0:24      Sequence
+0:24        move second child to first child (temp uint)
+0:24          'r01' (temp uint)
+0:24          max (temp uint)
+0:24            Convert bool to uint (temp uint)
+0:24              b: direct index for structure (layout(offset=12 ) uniform bool)
+0:24                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:24                Constant:
+0:24                  3 (const uint)
+0:24            u: direct index for structure (layout(offset=4 ) uniform uint)
+0:24              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:24              Constant:
+0:24                1 (const uint)
+0:25      Sequence
+0:25        move second child to first child (temp int)
+0:25          'r02' (temp int)
+0:25          max (temp int)
+0:25            Convert bool to int (temp int)
+0:25              b: direct index for structure (layout(offset=12 ) uniform bool)
+0:25                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:25                Constant:
+0:25                  3 (const uint)
+0:25            i: direct index for structure (layout(offset=0 ) uniform int)
+0:25              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:25              Constant:
+0:25                0 (const uint)
+0:26      Sequence
+0:26        move second child to first child (temp float)
+0:26          'r03' (temp float)
+0:26          max (temp float)
+0:26            Convert int to float (temp float)
+0:26              i: direct index for structure (layout(offset=0 ) uniform int)
+0:26                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:26                Constant:
+0:26                  0 (const uint)
+0:26            f: direct index for structure (layout(offset=8 ) uniform float)
+0:26              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:26              Constant:
+0:26                2 (const uint)
+0:27      Sequence
+0:27        move second child to first child (temp float)
+0:27          'r04' (temp float)
+0:27          max (temp float)
+0:27            Convert uint to float (temp float)
+0:27              u: direct index for structure (layout(offset=4 ) uniform uint)
+0:27                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:27                Constant:
+0:27                  1 (const uint)
+0:27            f: direct index for structure (layout(offset=8 ) uniform float)
+0:27              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:27              Constant:
+0:27                2 (const uint)
+0:29      Sequence
+0:29        move second child to first child (temp 2-component vector of float)
+0:29          'r10' (temp 2-component vector of float)
+0:29          max (temp 2-component vector of float)
+0:29            Convert bool to float (temp 2-component vector of float)
+0:29              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:29                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:29                Constant:
+0:29                  7 (const uint)
+0:29            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:29              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:29              Constant:
+0:29                6 (const uint)
+0:30      Sequence
+0:30        move second child to first child (temp 2-component vector of uint)
+0:30          'r11' (temp 2-component vector of uint)
+0:30          max (temp 2-component vector of uint)
+0:30            Convert bool to uint (temp 2-component vector of uint)
+0:30              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:30                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:30                Constant:
+0:30                  7 (const uint)
+0:30            u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:30              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:30              Constant:
+0:30                5 (const uint)
+0:31      Sequence
+0:31        move second child to first child (temp 2-component vector of int)
+0:31          'r12' (temp 2-component vector of int)
+0:31          max (temp 2-component vector of int)
+0:31            Convert bool to int (temp 2-component vector of int)
+0:31              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:31                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:31                Constant:
+0:31                  7 (const uint)
+0:31            i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int)
+0:31              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:31              Constant:
+0:31                4 (const uint)
+0:32      Sequence
+0:32        move second child to first child (temp 2-component vector of float)
+0:32          'r13' (temp 2-component vector of float)
+0:32          max (temp 2-component vector of float)
+0:32            Convert int to float (temp 2-component vector of float)
+0:32              i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int)
+0:32                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:32                Constant:
+0:32                  4 (const uint)
+0:32            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:32              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:32              Constant:
+0:32                6 (const uint)
+0:33      Sequence
+0:33        move second child to first child (temp 2-component vector of float)
+0:33          'r14' (temp 2-component vector of float)
+0:33          max (temp 2-component vector of float)
+0:33            Convert uint to float (temp 2-component vector of float)
+0:33              u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:33                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:33                Constant:
+0:33                  5 (const uint)
+0:33            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:33              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:33              Constant:
+0:33                6 (const uint)
+0:35      Sequence
+0:35        move second child to first child (temp 2-component vector of float)
+0:35          'r20' (temp 2-component vector of float)
+0:35          clamp (temp 2-component vector of float)
+0:35            Convert int to float (temp 2-component vector of float)
+0:35              i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int)
+0:35                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:35                Constant:
+0:35                  4 (const uint)
+0:35            Convert uint to float (temp 2-component vector of float)
+0:35              u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:35                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:35                Constant:
+0:35                  5 (const uint)
+0:35            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:35              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:35              Constant:
+0:35                6 (const uint)
+0:36      Sequence
+0:36        move second child to first child (temp 2-component vector of uint)
+0:36          'r21' (temp 2-component vector of uint)
+0:36          clamp (temp 2-component vector of uint)
+0:36            Convert bool to uint (temp 2-component vector of uint)
+0:36              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:36                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:36                Constant:
+0:36                  7 (const uint)
+0:36            u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:36              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:36              Constant:
+0:36                5 (const uint)
+0:36            Convert bool to uint (temp 2-component vector of uint)
+0:36              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:36                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:36                Constant:
+0:36                  7 (const uint)
+0:37      Sequence
+0:37        move second child to first child (temp 2-component vector of float)
+0:37          'r22' (temp 2-component vector of float)
+0:37          clamp (temp 2-component vector of float)
+0:37            Convert bool to float (temp 2-component vector of float)
+0:37              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:37                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:37                Constant:
+0:37                  7 (const uint)
+0:37            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:37              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:37              Constant:
+0:37                6 (const uint)
+0:37            Convert bool to float (temp 2-component vector of float)
+0:37              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:37                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:37                Constant:
+0:37                  7 (const uint)
+0:40      Sequence
+0:40        move second child to first child (temp 2-component vector of float)
+0:40          'r30' (temp 2-component vector of float)
+0:40          max (temp 2-component vector of float)
+0:40            Construct vec2 (in 2-component vector of float)
+0:40              Convert bool to float (temp float)
+0:40                b: direct index for structure (layout(offset=12 ) uniform bool)
+0:40                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:40                  Constant:
+0:40                    3 (const uint)
+0:40            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:40              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:40              Constant:
+0:40                6 (const uint)
+0:41      Sequence
+0:41        move second child to first child (temp 2-component vector of uint)
+0:41          'r31' (temp 2-component vector of uint)
+0:41          max (temp 2-component vector of uint)
+0:41            Construct uvec2 (in 2-component vector of uint)
+0:41              Convert bool to uint (temp uint)
+0:41                b: direct index for structure (layout(offset=12 ) uniform bool)
+0:41                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:41                  Constant:
+0:41                    3 (const uint)
+0:41            u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:41              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:41              Constant:
+0:41                5 (const uint)
+0:42      Sequence
+0:42        move second child to first child (temp 2-component vector of int)
+0:42          'r32' (temp 2-component vector of int)
+0:42          max (temp 2-component vector of int)
+0:42            Construct ivec2 (in 2-component vector of int)
+0:42              Convert bool to int (temp int)
+0:42                b: direct index for structure (layout(offset=12 ) uniform bool)
+0:42                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:42                  Constant:
+0:42                    3 (const uint)
+0:42            i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int)
+0:42              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:42              Constant:
+0:42                4 (const uint)
+0:43      Sequence
+0:43        move second child to first child (temp 2-component vector of float)
+0:43          'r33' (temp 2-component vector of float)
+0:43          max (temp 2-component vector of float)
+0:43            Construct vec2 (in 2-component vector of float)
+0:43              Convert int to float (temp float)
+0:43                i: direct index for structure (layout(offset=0 ) uniform int)
+0:43                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:43                  Constant:
+0:43                    0 (const uint)
+0:43            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:43              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:43              Constant:
+0:43                6 (const uint)
+0:44      Sequence
+0:44        move second child to first child (temp 2-component vector of float)
+0:44          'r34' (temp 2-component vector of float)
+0:44          max (temp 2-component vector of float)
+0:44            Construct vec2 (in 2-component vector of float)
+0:44              Convert uint to float (temp float)
+0:44                u: direct index for structure (layout(offset=4 ) uniform uint)
+0:44                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:44                  Constant:
+0:44                    1 (const uint)
+0:44            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:44              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:44              Constant:
+0:44                6 (const uint)
+0:46      Sequence
+0:46        move second child to first child (temp 2-component vector of float)
+0:46          'r40' (temp 2-component vector of float)
+0:46          clamp (temp 2-component vector of float)
+0:46            Construct vec2 (in 2-component vector of float)
+0:46              Convert int to float (temp float)
+0:46                i: direct index for structure (layout(offset=0 ) uniform int)
+0:46                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:46                  Constant:
+0:46                    0 (const uint)
+0:46            Convert uint to float (temp 2-component vector of float)
+0:46              u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:46                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:46                Constant:
+0:46                  5 (const uint)
+0:46            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:46              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:46              Constant:
+0:46                6 (const uint)
+0:47      Sequence
+0:47        move second child to first child (temp 2-component vector of uint)
+0:47          'r41' (temp 2-component vector of uint)
+0:47          clamp (temp 2-component vector of uint)
+0:47            Convert bool to uint (temp 2-component vector of uint)
+0:47              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:47                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:47                Constant:
+0:47                  7 (const uint)
+0:47            Construct uvec2 (in 2-component vector of uint)
+0:47              u: direct index for structure (layout(offset=4 ) uniform uint)
+0:47                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:47                Constant:
+0:47                  1 (const uint)
+0:47            Convert bool to uint (temp 2-component vector of uint)
+0:47              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:47                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:47                Constant:
+0:47                  7 (const uint)
+0:48      Sequence
+0:48        move second child to first child (temp 2-component vector of float)
+0:48          'r42' (temp 2-component vector of float)
+0:48          clamp (temp 2-component vector of float)
+0:48            Convert bool to float (temp 2-component vector of float)
+0:48              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:48                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:48                Constant:
+0:48                  7 (const uint)
+0:48            Construct vec2 (in 2-component vector of float)
+0:48              f: direct index for structure (layout(offset=8 ) uniform float)
+0:48                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:48                Constant:
+0:48                  2 (const uint)
+0:48            Construct vec2 (in 2-component vector of float)
+0:48              Convert bool to float (temp float)
+0:48                b: direct index for structure (layout(offset=12 ) uniform bool)
+0:48                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:48                  Constant:
+0:48                    3 (const uint)
+0:49      Sequence
+0:49        move second child to first child (temp 2-component vector of int)
+0:49          'r43' (temp 2-component vector of int)
+0:49          Convert uint to int (temp 2-component vector of int)
+0:49            clamp (temp 2-component vector of uint)
+0:49              Construct uvec2 (in 2-component vector of uint)
+0:49                Convert int to uint (temp uint)
+0:49                  i: direct index for structure (layout(offset=0 ) uniform int)
+0:49                    'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:49                    Constant:
+0:49                      0 (const uint)
+0:49              Convert int to uint (temp 2-component vector of uint)
+0:49                i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int)
+0:49                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:49                  Constant:
+0:49                    4 (const uint)
+0:49              u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:49                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:49                Constant:
+0:49                  5 (const uint)
+0:51      Sequence
+0:51        move second child to first child (temp float)
+0:51          'r50' (temp float)
+0:51          Construct float (temp float)
+0:?             textureFetch (temp 4-component vector of float)
+0:51              'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:51              Convert uint to int (temp int)
+0:51                upos: direct index for structure (layout(offset=48 ) uniform uint)
+0:51                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:51                  Constant:
+0:51                    8 (const uint)
+0:52      Sequence
+0:52        move second child to first child (temp float)
+0:52          'r51' (temp float)
+0:52          Construct float (temp float)
+0:?             textureFetch (temp 4-component vector of float)
+0:52              'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:52              Convert float to int (temp int)
+0:52                fpos: direct index for structure (layout(offset=52 ) uniform float)
+0:52                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:52                  Constant:
+0:52                    9 (const uint)
+0:70      Sequence
+0:70        move second child to first child (temp uint)
+0:70          'sizeQueryTemp' (temp uint)
+0:70          textureSize (temp uint)
+0:70            'g_tTex1df4' (uniform texture1D)
+0:70        move second child to first child (temp int)
+0:70          'WidthI' (temp int)
+0:70          Convert uint to int (temp int)
+0:70            'sizeQueryTemp' (temp uint)
+0:71      Sequence
+0:71        move second child to first child (temp uint)
+0:71          'sizeQueryTemp' (temp uint)
+0:71          textureSize (temp uint)
+0:71            'g_tTex1df4' (uniform texture1D)
+0:71            Constant:
+0:71              6 (const uint)
+0:71        move second child to first child (temp int)
+0:71          'WidthI' (temp int)
+0:71          Convert uint to int (temp int)
+0:71            'sizeQueryTemp' (temp uint)
+0:71        move second child to first child (temp uint)
+0:71          'NumberOfLevelsU' (temp uint)
+0:71          textureQueryLevels (temp uint)
+0:71            'g_tTex1df4' (uniform texture1D)
+0:72      Sequence
+0:72        move second child to first child (temp uint)
+0:72          'sizeQueryTemp' (temp uint)
+0:72          textureSize (temp uint)
+0:72            'g_tTex1df4' (uniform texture1D)
+0:72            Constant:
+0:72              6 (const uint)
+0:72        move second child to first child (temp uint)
+0:72          'WidthU' (temp uint)
+0:72          'sizeQueryTemp' (temp uint)
+0:72        move second child to first child (temp int)
+0:72          'NumberOfLevelsI' (temp int)
+0:72          Convert uint to int (temp int)
+0:72            textureQueryLevels (temp uint)
+0:72              'g_tTex1df4' (uniform texture1D)
+0:73      Sequence
+0:73        move second child to first child (temp uint)
+0:73          'sizeQueryTemp' (temp uint)
+0:73          textureSize (temp uint)
+0:73            'g_tTex1df4' (uniform texture1D)
+0:73            Constant:
+0:73              6 (const uint)
+0:73        move second child to first child (temp int)
+0:73          'WidthI' (temp int)
+0:73          Convert uint to int (temp int)
+0:73            'sizeQueryTemp' (temp uint)
+0:73        move second child to first child (temp int)
+0:73          'NumberOfLevelsI' (temp int)
+0:73          Convert uint to int (temp int)
+0:73            textureQueryLevels (temp uint)
+0:73              'g_tTex1df4' (uniform texture1D)
+0:77      move second child to first child (temp 4-component vector of float)
+0:77        color: direct index for structure (temp 4-component vector of float)
+0:77          'ps_output' (temp structure{temp 4-component vector of float color})
+0:77          Constant:
+0:77            0 (const int)
+0:77        Construct vec4 (temp 4-component vector of float)
+0:77          'r00' (temp float)
+0:78      Sequence
+0:78        Sequence
+0:78          move second child to first child (temp 4-component vector of float)
+0:?             'color' (layout(location=0 ) out 4-component vector of float)
+0:78            color: direct index for structure (temp 4-component vector of float)
+0:78              'ps_output' (temp structure{temp 4-component vector of float color})
+0:78              Constant:
+0:78                0 (const int)
+0:78        Branch: Return
+0:?   Linker Objects
+0:?     'color' (layout(location=0 ) out 4-component vector of float)
+0:?     'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float color})
+0:20    Function Parameters: 
+0:?     Sequence
+0:23      Sequence
+0:23        move second child to first child (temp float)
+0:23          'r00' (temp float)
+0:23          max (temp float)
+0:23            Convert bool to float (temp float)
+0:23              b: direct index for structure (layout(offset=12 ) uniform bool)
+0:23                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:23                Constant:
+0:23                  3 (const uint)
+0:23            f: direct index for structure (layout(offset=8 ) uniform float)
+0:23              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:23              Constant:
+0:23                2 (const uint)
+0:24      Sequence
+0:24        move second child to first child (temp uint)
+0:24          'r01' (temp uint)
+0:24          max (temp uint)
+0:24            Convert bool to uint (temp uint)
+0:24              b: direct index for structure (layout(offset=12 ) uniform bool)
+0:24                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:24                Constant:
+0:24                  3 (const uint)
+0:24            u: direct index for structure (layout(offset=4 ) uniform uint)
+0:24              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:24              Constant:
+0:24                1 (const uint)
+0:25      Sequence
+0:25        move second child to first child (temp int)
+0:25          'r02' (temp int)
+0:25          max (temp int)
+0:25            Convert bool to int (temp int)
+0:25              b: direct index for structure (layout(offset=12 ) uniform bool)
+0:25                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:25                Constant:
+0:25                  3 (const uint)
+0:25            i: direct index for structure (layout(offset=0 ) uniform int)
+0:25              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:25              Constant:
+0:25                0 (const uint)
+0:26      Sequence
+0:26        move second child to first child (temp float)
+0:26          'r03' (temp float)
+0:26          max (temp float)
+0:26            Convert int to float (temp float)
+0:26              i: direct index for structure (layout(offset=0 ) uniform int)
+0:26                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:26                Constant:
+0:26                  0 (const uint)
+0:26            f: direct index for structure (layout(offset=8 ) uniform float)
+0:26              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:26              Constant:
+0:26                2 (const uint)
+0:27      Sequence
+0:27        move second child to first child (temp float)
+0:27          'r04' (temp float)
+0:27          max (temp float)
+0:27            Convert uint to float (temp float)
+0:27              u: direct index for structure (layout(offset=4 ) uniform uint)
+0:27                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:27                Constant:
+0:27                  1 (const uint)
+0:27            f: direct index for structure (layout(offset=8 ) uniform float)
+0:27              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:27              Constant:
+0:27                2 (const uint)
+0:29      Sequence
+0:29        move second child to first child (temp 2-component vector of float)
+0:29          'r10' (temp 2-component vector of float)
+0:29          max (temp 2-component vector of float)
+0:29            Convert bool to float (temp 2-component vector of float)
+0:29              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:29                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:29                Constant:
+0:29                  7 (const uint)
+0:29            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:29              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:29              Constant:
+0:29                6 (const uint)
+0:30      Sequence
+0:30        move second child to first child (temp 2-component vector of uint)
+0:30          'r11' (temp 2-component vector of uint)
+0:30          max (temp 2-component vector of uint)
+0:30            Convert bool to uint (temp 2-component vector of uint)
+0:30              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:30                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:30                Constant:
+0:30                  7 (const uint)
+0:30            u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:30              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:30              Constant:
+0:30                5 (const uint)
+0:31      Sequence
+0:31        move second child to first child (temp 2-component vector of int)
+0:31          'r12' (temp 2-component vector of int)
+0:31          max (temp 2-component vector of int)
+0:31            Convert bool to int (temp 2-component vector of int)
+0:31              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:31                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:31                Constant:
+0:31                  7 (const uint)
+0:31            i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int)
+0:31              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:31              Constant:
+0:31                4 (const uint)
+0:32      Sequence
+0:32        move second child to first child (temp 2-component vector of float)
+0:32          'r13' (temp 2-component vector of float)
+0:32          max (temp 2-component vector of float)
+0:32            Convert int to float (temp 2-component vector of float)
+0:32              i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int)
+0:32                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:32                Constant:
+0:32                  4 (const uint)
+0:32            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:32              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:32              Constant:
+0:32                6 (const uint)
+0:33      Sequence
+0:33        move second child to first child (temp 2-component vector of float)
+0:33          'r14' (temp 2-component vector of float)
+0:33          max (temp 2-component vector of float)
+0:33            Convert uint to float (temp 2-component vector of float)
+0:33              u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:33                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:33                Constant:
+0:33                  5 (const uint)
+0:33            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:33              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:33              Constant:
+0:33                6 (const uint)
+0:35      Sequence
+0:35        move second child to first child (temp 2-component vector of float)
+0:35          'r20' (temp 2-component vector of float)
+0:35          clamp (temp 2-component vector of float)
+0:35            Convert int to float (temp 2-component vector of float)
+0:35              i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int)
+0:35                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:35                Constant:
+0:35                  4 (const uint)
+0:35            Convert uint to float (temp 2-component vector of float)
+0:35              u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:35                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:35                Constant:
+0:35                  5 (const uint)
+0:35            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:35              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:35              Constant:
+0:35                6 (const uint)
+0:36      Sequence
+0:36        move second child to first child (temp 2-component vector of uint)
+0:36          'r21' (temp 2-component vector of uint)
+0:36          clamp (temp 2-component vector of uint)
+0:36            Convert bool to uint (temp 2-component vector of uint)
+0:36              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:36                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:36                Constant:
+0:36                  7 (const uint)
+0:36            u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:36              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:36              Constant:
+0:36                5 (const uint)
+0:36            Convert bool to uint (temp 2-component vector of uint)
+0:36              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:36                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:36                Constant:
+0:36                  7 (const uint)
+0:37      Sequence
+0:37        move second child to first child (temp 2-component vector of float)
+0:37          'r22' (temp 2-component vector of float)
+0:37          clamp (temp 2-component vector of float)
+0:37            Convert bool to float (temp 2-component vector of float)
+0:37              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:37                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:37                Constant:
+0:37                  7 (const uint)
+0:37            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:37              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:37              Constant:
+0:37                6 (const uint)
+0:37            Convert bool to float (temp 2-component vector of float)
+0:37              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:37                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:37                Constant:
+0:37                  7 (const uint)
+0:40      Sequence
+0:40        move second child to first child (temp 2-component vector of float)
+0:40          'r30' (temp 2-component vector of float)
+0:40          max (temp 2-component vector of float)
+0:40            Construct vec2 (in 2-component vector of float)
+0:40              Convert bool to float (temp float)
+0:40                b: direct index for structure (layout(offset=12 ) uniform bool)
+0:40                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:40                  Constant:
+0:40                    3 (const uint)
+0:40            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:40              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:40              Constant:
+0:40                6 (const uint)
+0:41      Sequence
+0:41        move second child to first child (temp 2-component vector of uint)
+0:41          'r31' (temp 2-component vector of uint)
+0:41          max (temp 2-component vector of uint)
+0:41            Construct uvec2 (in 2-component vector of uint)
+0:41              Convert bool to uint (temp uint)
+0:41                b: direct index for structure (layout(offset=12 ) uniform bool)
+0:41                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:41                  Constant:
+0:41                    3 (const uint)
+0:41            u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:41              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:41              Constant:
+0:41                5 (const uint)
+0:42      Sequence
+0:42        move second child to first child (temp 2-component vector of int)
+0:42          'r32' (temp 2-component vector of int)
+0:42          max (temp 2-component vector of int)
+0:42            Construct ivec2 (in 2-component vector of int)
+0:42              Convert bool to int (temp int)
+0:42                b: direct index for structure (layout(offset=12 ) uniform bool)
+0:42                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:42                  Constant:
+0:42                    3 (const uint)
+0:42            i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int)
+0:42              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:42              Constant:
+0:42                4 (const uint)
+0:43      Sequence
+0:43        move second child to first child (temp 2-component vector of float)
+0:43          'r33' (temp 2-component vector of float)
+0:43          max (temp 2-component vector of float)
+0:43            Construct vec2 (in 2-component vector of float)
+0:43              Convert int to float (temp float)
+0:43                i: direct index for structure (layout(offset=0 ) uniform int)
+0:43                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:43                  Constant:
+0:43                    0 (const uint)
+0:43            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:43              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:43              Constant:
+0:43                6 (const uint)
+0:44      Sequence
+0:44        move second child to first child (temp 2-component vector of float)
+0:44          'r34' (temp 2-component vector of float)
+0:44          max (temp 2-component vector of float)
+0:44            Construct vec2 (in 2-component vector of float)
+0:44              Convert uint to float (temp float)
+0:44                u: direct index for structure (layout(offset=4 ) uniform uint)
+0:44                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:44                  Constant:
+0:44                    1 (const uint)
+0:44            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:44              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:44              Constant:
+0:44                6 (const uint)
+0:46      Sequence
+0:46        move second child to first child (temp 2-component vector of float)
+0:46          'r40' (temp 2-component vector of float)
+0:46          clamp (temp 2-component vector of float)
+0:46            Construct vec2 (in 2-component vector of float)
+0:46              Convert int to float (temp float)
+0:46                i: direct index for structure (layout(offset=0 ) uniform int)
+0:46                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:46                  Constant:
+0:46                    0 (const uint)
+0:46            Convert uint to float (temp 2-component vector of float)
+0:46              u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:46                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:46                Constant:
+0:46                  5 (const uint)
+0:46            f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float)
+0:46              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:46              Constant:
+0:46                6 (const uint)
+0:47      Sequence
+0:47        move second child to first child (temp 2-component vector of uint)
+0:47          'r41' (temp 2-component vector of uint)
+0:47          clamp (temp 2-component vector of uint)
+0:47            Convert bool to uint (temp 2-component vector of uint)
+0:47              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:47                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:47                Constant:
+0:47                  7 (const uint)
+0:47            Construct uvec2 (in 2-component vector of uint)
+0:47              u: direct index for structure (layout(offset=4 ) uniform uint)
+0:47                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:47                Constant:
+0:47                  1 (const uint)
+0:47            Convert bool to uint (temp 2-component vector of uint)
+0:47              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:47                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:47                Constant:
+0:47                  7 (const uint)
+0:48      Sequence
+0:48        move second child to first child (temp 2-component vector of float)
+0:48          'r42' (temp 2-component vector of float)
+0:48          clamp (temp 2-component vector of float)
+0:48            Convert bool to float (temp 2-component vector of float)
+0:48              b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool)
+0:48                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:48                Constant:
+0:48                  7 (const uint)
+0:48            Construct vec2 (in 2-component vector of float)
+0:48              f: direct index for structure (layout(offset=8 ) uniform float)
+0:48                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:48                Constant:
+0:48                  2 (const uint)
+0:48            Construct vec2 (in 2-component vector of float)
+0:48              Convert bool to float (temp float)
+0:48                b: direct index for structure (layout(offset=12 ) uniform bool)
+0:48                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:48                  Constant:
+0:48                    3 (const uint)
+0:49      Sequence
+0:49        move second child to first child (temp 2-component vector of int)
+0:49          'r43' (temp 2-component vector of int)
+0:49          Convert uint to int (temp 2-component vector of int)
+0:49            clamp (temp 2-component vector of uint)
+0:49              Construct uvec2 (in 2-component vector of uint)
+0:49                Convert int to uint (temp uint)
+0:49                  i: direct index for structure (layout(offset=0 ) uniform int)
+0:49                    'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:49                    Constant:
+0:49                      0 (const uint)
+0:49              Convert int to uint (temp 2-component vector of uint)
+0:49                i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int)
+0:49                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:49                  Constant:
+0:49                    4 (const uint)
+0:49              u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint)
+0:49                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:49                Constant:
+0:49                  5 (const uint)
+0:51      Sequence
+0:51        move second child to first child (temp float)
+0:51          'r50' (temp float)
+0:51          Construct float (temp float)
+0:?             textureFetch (temp 4-component vector of float)
+0:51              'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:51              Convert uint to int (temp int)
+0:51                upos: direct index for structure (layout(offset=48 ) uniform uint)
+0:51                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:51                  Constant:
+0:51                    8 (const uint)
+0:52      Sequence
+0:52        move second child to first child (temp float)
+0:52          'r51' (temp float)
+0:52          Construct float (temp float)
+0:?             textureFetch (temp 4-component vector of float)
+0:52              'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:52              Convert float to int (temp int)
+0:52                fpos: direct index for structure (layout(offset=52 ) uniform float)
+0:52                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:52                  Constant:
+0:52                    9 (const uint)
+0:70      Sequence
+0:70        move second child to first child (temp uint)
+0:70          'sizeQueryTemp' (temp uint)
+0:70          textureSize (temp uint)
+0:70            'g_tTex1df4' (uniform texture1D)
+0:70        move second child to first child (temp int)
+0:70          'WidthI' (temp int)
+0:70          Convert uint to int (temp int)
+0:70            'sizeQueryTemp' (temp uint)
+0:71      Sequence
+0:71        move second child to first child (temp uint)
+0:71          'sizeQueryTemp' (temp uint)
+0:71          textureSize (temp uint)
+0:71            'g_tTex1df4' (uniform texture1D)
+0:71            Constant:
+0:71              6 (const uint)
+0:71        move second child to first child (temp int)
+0:71          'WidthI' (temp int)
+0:71          Convert uint to int (temp int)
+0:71            'sizeQueryTemp' (temp uint)
+0:71        move second child to first child (temp uint)
+0:71          'NumberOfLevelsU' (temp uint)
+0:71          textureQueryLevels (temp uint)
+0:71            'g_tTex1df4' (uniform texture1D)
+0:72      Sequence
+0:72        move second child to first child (temp uint)
+0:72          'sizeQueryTemp' (temp uint)
+0:72          textureSize (temp uint)
+0:72            'g_tTex1df4' (uniform texture1D)
+0:72            Constant:
+0:72              6 (const uint)
+0:72        move second child to first child (temp uint)
+0:72          'WidthU' (temp uint)
+0:72          'sizeQueryTemp' (temp uint)
+0:72        move second child to first child (temp int)
+0:72          'NumberOfLevelsI' (temp int)
+0:72          Convert uint to int (temp int)
+0:72            textureQueryLevels (temp uint)
+0:72              'g_tTex1df4' (uniform texture1D)
+0:73      Sequence
+0:73        move second child to first child (temp uint)
+0:73          'sizeQueryTemp' (temp uint)
+0:73          textureSize (temp uint)
+0:73            'g_tTex1df4' (uniform texture1D)
+0:73            Constant:
+0:73              6 (const uint)
+0:73        move second child to first child (temp int)
+0:73          'WidthI' (temp int)
+0:73          Convert uint to int (temp int)
+0:73            'sizeQueryTemp' (temp uint)
+0:73        move second child to first child (temp int)
+0:73          'NumberOfLevelsI' (temp int)
+0:73          Convert uint to int (temp int)
+0:73            textureQueryLevels (temp uint)
+0:73              'g_tTex1df4' (uniform texture1D)
+0:77      move second child to first child (temp 4-component vector of float)
+0:77        color: direct index for structure (temp 4-component vector of float)
+0:77          'ps_output' (temp structure{temp 4-component vector of float color})
+0:77          Constant:
+0:77            0 (const int)
+0:77        Construct vec4 (temp 4-component vector of float)
+0:77          'r00' (temp float)
+0:78      Sequence
+0:78        Sequence
+0:78          move second child to first child (temp 4-component vector of float)
+0:?             'color' (layout(location=0 ) out 4-component vector of float)
+0:78            color: direct index for structure (temp 4-component vector of float)
+0:78              'ps_output' (temp structure{temp 4-component vector of float color})
+0:78              Constant:
+0:78                0 (const int)
+0:78        Branch: Return
+0:?   Linker Objects
+0:?     'color' (layout(location=0 ) out 4-component vector of float)
+0:?     'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 320
+
+                              Capability Shader
+                              Capability Sampled1D
+                              Capability SampledBuffer
+                              Capability ImageQuery
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 316
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 8  "r00"
+                              Name 14  "$Global"
+                              MemberName 14($Global) 0  "i"
+                              MemberName 14($Global) 1  "u"
+                              MemberName 14($Global) 2  "f"
+                              MemberName 14($Global) 3  "b"
+                              MemberName 14($Global) 4  "i2"
+                              MemberName 14($Global) 5  "u2"
+                              MemberName 14($Global) 6  "f2"
+                              MemberName 14($Global) 7  "b2"
+                              MemberName 14($Global) 8  "upos"
+                              MemberName 14($Global) 9  "fpos"
+                              Name 16  ""
+                              Name 33  "r01"
+                              Name 44  "r02"
+                              Name 54  "r03"
+                              Name 61  "r04"
+                              Name 69  "r10"
+                              Name 86  "r11"
+                              Name 97  "r12"
+                              Name 109  "r13"
+                              Name 116  "r14"
+                              Name 123  "r20"
+                              Name 133  "r21"
+                              Name 145  "r22"
+                              Name 157  "r30"
+                              Name 166  "r31"
+                              Name 175  "r32"
+                              Name 184  "r33"
+                              Name 192  "r34"
+                              Name 200  "r40"
+                              Name 211  "r41"
+                              Name 224  "r42"
+                              Name 238  "r43"
+                              Name 250  "r50"
+                              Name 254  "g_tTexbfs"
+                              Name 264  "r51"
+                              Name 273  "sizeQueryTemp"
+                              Name 276  "g_tTex1df4"
+                              Name 279  "WidthI"
+                              Name 282  "sizeQueryTemp"
+                              Name 288  "NumberOfLevelsU"
+                              Name 291  "sizeQueryTemp"
+                              Name 294  "WidthU"
+                              Name 296  "NumberOfLevelsI"
+                              Name 300  "sizeQueryTemp"
+                              Name 308  "PS_OUTPUT"
+                              MemberName 308(PS_OUTPUT) 0  "color"
+                              Name 310  "ps_output"
+                              Name 316  "color"
+                              MemberDecorate 14($Global) 0 Offset 0
+                              MemberDecorate 14($Global) 1 Offset 4
+                              MemberDecorate 14($Global) 2 Offset 8
+                              MemberDecorate 14($Global) 3 Offset 12
+                              MemberDecorate 14($Global) 4 Offset 16
+                              MemberDecorate 14($Global) 5 Offset 24
+                              MemberDecorate 14($Global) 6 Offset 32
+                              MemberDecorate 14($Global) 7 Offset 40
+                              MemberDecorate 14($Global) 8 Offset 48
+                              MemberDecorate 14($Global) 9 Offset 52
+                              Decorate 14($Global) Block
+                              Decorate 16 DescriptorSet 0
+                              Decorate 254(g_tTexbfs) DescriptorSet 0
+                              Decorate 276(g_tTex1df4) DescriptorSet 0
+                              Decorate 316(color) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+               9:             TypeInt 32 1
+              10:             TypeInt 32 0
+              11:             TypeVector 9(int) 2
+              12:             TypeVector 10(int) 2
+              13:             TypeVector 6(float) 2
+     14($Global):             TypeStruct 9(int) 10(int) 6(float) 10(int) 11(ivec2) 12(ivec2) 13(fvec2) 12(ivec2) 10(int) 6(float)
+              15:             TypePointer Uniform 14($Global)
+              16:     15(ptr) Variable Uniform
+              17:      9(int) Constant 3
+              18:             TypePointer Uniform 10(int)
+              21:             TypeBool
+              22:     10(int) Constant 0
+              24:    6(float) Constant 0
+              25:    6(float) Constant 1065353216
+              27:      9(int) Constant 2
+              28:             TypePointer Uniform 6(float)
+              32:             TypePointer Function 10(int)
+              37:     10(int) Constant 1
+              39:      9(int) Constant 1
+              43:             TypePointer Function 9(int)
+              48:      9(int) Constant 0
+              50:             TypePointer Uniform 9(int)
+              68:             TypePointer Function 13(fvec2)
+              70:      9(int) Constant 7
+              71:             TypePointer Uniform 12(ivec2)
+              74:             TypeVector 21(bool) 2
+              75:   12(ivec2) ConstantComposite 22 22
+              77:   13(fvec2) ConstantComposite 24 24
+              78:   13(fvec2) ConstantComposite 25 25
+              80:      9(int) Constant 6
+              81:             TypePointer Uniform 13(fvec2)
+              85:             TypePointer Function 12(ivec2)
+              90:   12(ivec2) ConstantComposite 37 37
+              92:      9(int) Constant 5
+              96:             TypePointer Function 11(ivec2)
+             101:   11(ivec2) ConstantComposite 48 48
+             102:   11(ivec2) ConstantComposite 39 39
+             104:      9(int) Constant 4
+             105:             TypePointer Uniform 11(ivec2)
+             251:             TypeImage 6(float) Buffer sampled format:R32f
+             252:             TypeSampledImage 251
+             253:             TypePointer UniformConstant 252
+  254(g_tTexbfs):    253(ptr) Variable UniformConstant
+             256:      9(int) Constant 8
+             261:             TypeVector 6(float) 4
+             266:      9(int) Constant 9
+             274:             TypeImage 6(float) 1D sampled format:Unknown
+             275:             TypePointer UniformConstant 274
+ 276(g_tTex1df4):    275(ptr) Variable UniformConstant
+             284:     10(int) Constant 6
+  308(PS_OUTPUT):             TypeStruct 261(fvec4)
+             309:             TypePointer Function 308(PS_OUTPUT)
+             313:             TypePointer Function 261(fvec4)
+             315:             TypePointer Output 261(fvec4)
+      316(color):    315(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+          8(r00):      7(ptr) Variable Function
+         33(r01):     32(ptr) Variable Function
+         44(r02):     43(ptr) Variable Function
+         54(r03):      7(ptr) Variable Function
+         61(r04):      7(ptr) Variable Function
+         69(r10):     68(ptr) Variable Function
+         86(r11):     85(ptr) Variable Function
+         97(r12):     96(ptr) Variable Function
+        109(r13):     68(ptr) Variable Function
+        116(r14):     68(ptr) Variable Function
+        123(r20):     68(ptr) Variable Function
+        133(r21):     85(ptr) Variable Function
+        145(r22):     68(ptr) Variable Function
+        157(r30):     68(ptr) Variable Function
+        166(r31):     85(ptr) Variable Function
+        175(r32):     96(ptr) Variable Function
+        184(r33):     68(ptr) Variable Function
+        192(r34):     68(ptr) Variable Function
+        200(r40):     68(ptr) Variable Function
+        211(r41):     85(ptr) Variable Function
+        224(r42):     68(ptr) Variable Function
+        238(r43):     96(ptr) Variable Function
+        250(r50):      7(ptr) Variable Function
+        264(r51):      7(ptr) Variable Function
+273(sizeQueryTemp):     32(ptr) Variable Function
+     279(WidthI):     43(ptr) Variable Function
+282(sizeQueryTemp):     32(ptr) Variable Function
+288(NumberOfLevelsU):     32(ptr) Variable Function
+291(sizeQueryTemp):     32(ptr) Variable Function
+     294(WidthU):     32(ptr) Variable Function
+296(NumberOfLevelsI):     43(ptr) Variable Function
+300(sizeQueryTemp):     32(ptr) Variable Function
+  310(ps_output):    309(ptr) Variable Function
+              19:     18(ptr) AccessChain 16 17
+              20:     10(int) Load 19
+              23:    21(bool) INotEqual 20 22
+              26:    6(float) Select 23 25 24
+              29:     28(ptr) AccessChain 16 27
+              30:    6(float) Load 29
+              31:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 26 30
+                              Store 8(r00) 31
+              34:     18(ptr) AccessChain 16 17
+              35:     10(int) Load 34
+              36:    21(bool) INotEqual 35 22
+              38:     10(int) Select 36 37 22
+              40:     18(ptr) AccessChain 16 39
+              41:     10(int) Load 40
+              42:     10(int) ExtInst 1(GLSL.std.450) 41(UMax) 38 41
+                              Store 33(r01) 42
+              45:     18(ptr) AccessChain 16 17
+              46:     10(int) Load 45
+              47:    21(bool) INotEqual 46 22
+              49:      9(int) Select 47 39 48
+              51:     50(ptr) AccessChain 16 48
+              52:      9(int) Load 51
+              53:      9(int) ExtInst 1(GLSL.std.450) 42(SMax) 49 52
+                              Store 44(r02) 53
+              55:     50(ptr) AccessChain 16 48
+              56:      9(int) Load 55
+              57:    6(float) ConvertSToF 56
+              58:     28(ptr) AccessChain 16 27
+              59:    6(float) Load 58
+              60:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 57 59
+                              Store 54(r03) 60
+              62:     18(ptr) AccessChain 16 39
+              63:     10(int) Load 62
+              64:    6(float) ConvertUToF 63
+              65:     28(ptr) AccessChain 16 27
+              66:    6(float) Load 65
+              67:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 64 66
+                              Store 61(r04) 67
+              72:     71(ptr) AccessChain 16 70
+              73:   12(ivec2) Load 72
+              76:   74(bvec2) INotEqual 73 75
+              79:   13(fvec2) Select 76 78 77
+              82:     81(ptr) AccessChain 16 80
+              83:   13(fvec2) Load 82
+              84:   13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 79 83
+                              Store 69(r10) 84
+              87:     71(ptr) AccessChain 16 70
+              88:   12(ivec2) Load 87
+              89:   74(bvec2) INotEqual 88 75
+              91:   12(ivec2) Select 89 90 75
+              93:     71(ptr) AccessChain 16 92
+              94:   12(ivec2) Load 93
+              95:   12(ivec2) ExtInst 1(GLSL.std.450) 41(UMax) 91 94
+                              Store 86(r11) 95
+              98:     71(ptr) AccessChain 16 70
+              99:   12(ivec2) Load 98
+             100:   74(bvec2) INotEqual 99 75
+             103:   11(ivec2) Select 100 102 101
+             106:    105(ptr) AccessChain 16 104
+             107:   11(ivec2) Load 106
+             108:   11(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 103 107
+                              Store 97(r12) 108
+             110:    105(ptr) AccessChain 16 104
+             111:   11(ivec2) Load 110
+             112:   13(fvec2) ConvertSToF 111
+             113:     81(ptr) AccessChain 16 80
+             114:   13(fvec2) Load 113
+             115:   13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 112 114
+                              Store 109(r13) 115
+             117:     71(ptr) AccessChain 16 92
+             118:   12(ivec2) Load 117
+             119:   13(fvec2) ConvertUToF 118
+             120:     81(ptr) AccessChain 16 80
+             121:   13(fvec2) Load 120
+             122:   13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 119 121
+                              Store 116(r14) 122
+             124:    105(ptr) AccessChain 16 104
+             125:   11(ivec2) Load 124
+             126:   13(fvec2) ConvertSToF 125
+             127:     71(ptr) AccessChain 16 92
+             128:   12(ivec2) Load 127
+             129:   13(fvec2) ConvertUToF 128
+             130:     81(ptr) AccessChain 16 80
+             131:   13(fvec2) Load 130
+             132:   13(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 126 129 131
+                              Store 123(r20) 132
+             134:     71(ptr) AccessChain 16 70
+             135:   12(ivec2) Load 134
+             136:   74(bvec2) INotEqual 135 75
+             137:   12(ivec2) Select 136 90 75
+             138:     71(ptr) AccessChain 16 92
+             139:   12(ivec2) Load 138
+             140:     71(ptr) AccessChain 16 70
+             141:   12(ivec2) Load 140
+             142:   74(bvec2) INotEqual 141 75
+             143:   12(ivec2) Select 142 90 75
+             144:   12(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 137 139 143
+                              Store 133(r21) 144
+             146:     71(ptr) AccessChain 16 70
+             147:   12(ivec2) Load 146
+             148:   74(bvec2) INotEqual 147 75
+             149:   13(fvec2) Select 148 78 77
+             150:     81(ptr) AccessChain 16 80
+             151:   13(fvec2) Load 150
+             152:     71(ptr) AccessChain 16 70
+             153:   12(ivec2) Load 152
+             154:   74(bvec2) INotEqual 153 75
+             155:   13(fvec2) Select 154 78 77
+             156:   13(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 149 151 155
+                              Store 145(r22) 156
+             158:     18(ptr) AccessChain 16 17
+             159:     10(int) Load 158
+             160:    21(bool) INotEqual 159 22
+             161:    6(float) Select 160 25 24
+             162:   13(fvec2) CompositeConstruct 161 161
+             163:     81(ptr) AccessChain 16 80
+             164:   13(fvec2) Load 163
+             165:   13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 162 164
+                              Store 157(r30) 165
+             167:     18(ptr) AccessChain 16 17
+             168:     10(int) Load 167
+             169:    21(bool) INotEqual 168 22
+             170:     10(int) Select 169 37 22
+             171:   12(ivec2) CompositeConstruct 170 170
+             172:     71(ptr) AccessChain 16 92
+             173:   12(ivec2) Load 172
+             174:   12(ivec2) ExtInst 1(GLSL.std.450) 41(UMax) 171 173
+                              Store 166(r31) 174
+             176:     18(ptr) AccessChain 16 17
+             177:     10(int) Load 176
+             178:    21(bool) INotEqual 177 22
+             179:      9(int) Select 178 39 48
+             180:   11(ivec2) CompositeConstruct 179 179
+             181:    105(ptr) AccessChain 16 104
+             182:   11(ivec2) Load 181
+             183:   11(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 180 182
+                              Store 175(r32) 183
+             185:     50(ptr) AccessChain 16 48
+             186:      9(int) Load 185
+             187:    6(float) ConvertSToF 186
+             188:   13(fvec2) CompositeConstruct 187 187
+             189:     81(ptr) AccessChain 16 80
+             190:   13(fvec2) Load 189
+             191:   13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 188 190
+                              Store 184(r33) 191
+             193:     18(ptr) AccessChain 16 39
+             194:     10(int) Load 193
+             195:    6(float) ConvertUToF 194
+             196:   13(fvec2) CompositeConstruct 195 195
+             197:     81(ptr) AccessChain 16 80
+             198:   13(fvec2) Load 197
+             199:   13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 196 198
+                              Store 192(r34) 199
+             201:     50(ptr) AccessChain 16 48
+             202:      9(int) Load 201
+             203:    6(float) ConvertSToF 202
+             204:   13(fvec2) CompositeConstruct 203 203
+             205:     71(ptr) AccessChain 16 92
+             206:   12(ivec2) Load 205
+             207:   13(fvec2) ConvertUToF 206
+             208:     81(ptr) AccessChain 16 80
+             209:   13(fvec2) Load 208
+             210:   13(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 204 207 209
+                              Store 200(r40) 210
+             212:     71(ptr) AccessChain 16 70
+             213:   12(ivec2) Load 212
+             214:   74(bvec2) INotEqual 213 75
+             215:   12(ivec2) Select 214 90 75
+             216:     18(ptr) AccessChain 16 39
+             217:     10(int) Load 216
+             218:   12(ivec2) CompositeConstruct 217 217
+             219:     71(ptr) AccessChain 16 70
+             220:   12(ivec2) Load 219
+             221:   74(bvec2) INotEqual 220 75
+             222:   12(ivec2) Select 221 90 75
+             223:   12(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 215 218 222
+                              Store 211(r41) 223
+             225:     71(ptr) AccessChain 16 70
+             226:   12(ivec2) Load 225
+             227:   74(bvec2) INotEqual 226 75
+             228:   13(fvec2) Select 227 78 77
+             229:     28(ptr) AccessChain 16 27
+             230:    6(float) Load 229
+             231:   13(fvec2) CompositeConstruct 230 230
+             232:     18(ptr) AccessChain 16 17
+             233:     10(int) Load 232
+             234:    21(bool) INotEqual 233 22
+             235:    6(float) Select 234 25 24
+             236:   13(fvec2) CompositeConstruct 235 235
+             237:   13(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 228 231 236
+                              Store 224(r42) 237
+             239:     50(ptr) AccessChain 16 48
+             240:      9(int) Load 239
+             241:     10(int) Bitcast 240
+             242:   12(ivec2) CompositeConstruct 241 241
+             243:    105(ptr) AccessChain 16 104
+             244:   11(ivec2) Load 243
+             245:   12(ivec2) Bitcast 244
+             246:     71(ptr) AccessChain 16 92
+             247:   12(ivec2) Load 246
+             248:   12(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 242 245 247
+             249:   11(ivec2) Bitcast 248
+                              Store 238(r43) 249
+             255:         252 Load 254(g_tTexbfs)
+             257:     18(ptr) AccessChain 16 256
+             258:     10(int) Load 257
+             259:      9(int) Bitcast 258
+             260:         251 Image 255
+             262:  261(fvec4) ImageFetch 260 259
+             263:    6(float) CompositeExtract 262 0
+                              Store 250(r50) 263
+             265:         252 Load 254(g_tTexbfs)
+             267:     28(ptr) AccessChain 16 266
+             268:    6(float) Load 267
+             269:      9(int) ConvertFToS 268
+             270:         251 Image 265
+             271:  261(fvec4) ImageFetch 270 269
+             272:    6(float) CompositeExtract 271 0
+                              Store 264(r51) 272
+             277:         274 Load 276(g_tTex1df4)
+             278:      9(int) ImageQuerySize 277
+                              Store 273(sizeQueryTemp) 278
+             280:     10(int) Load 273(sizeQueryTemp)
+             281:      9(int) Bitcast 280
+                              Store 279(WidthI) 281
+             283:         274 Load 276(g_tTex1df4)
+             285:      9(int) ImageQuerySizeLod 283 284
+                              Store 282(sizeQueryTemp) 285
+             286:     10(int) Load 282(sizeQueryTemp)
+             287:      9(int) Bitcast 286
+                              Store 279(WidthI) 287
+             289:         274 Load 276(g_tTex1df4)
+             290:      9(int) ImageQueryLevels 289
+                              Store 288(NumberOfLevelsU) 290
+             292:         274 Load 276(g_tTex1df4)
+             293:      9(int) ImageQuerySizeLod 292 284
+                              Store 291(sizeQueryTemp) 293
+             295:     10(int) Load 291(sizeQueryTemp)
+                              Store 294(WidthU) 295
+             297:         274 Load 276(g_tTex1df4)
+             298:      9(int) ImageQueryLevels 297
+             299:      9(int) Bitcast 298
+                              Store 296(NumberOfLevelsI) 299
+             301:         274 Load 276(g_tTex1df4)
+             302:      9(int) ImageQuerySizeLod 301 284
+                              Store 300(sizeQueryTemp) 302
+             303:     10(int) Load 300(sizeQueryTemp)
+             304:      9(int) Bitcast 303
+                              Store 279(WidthI) 304
+             305:         274 Load 276(g_tTex1df4)
+             306:      9(int) ImageQueryLevels 305
+             307:      9(int) Bitcast 306
+                              Store 296(NumberOfLevelsI) 307
+             311:    6(float) Load 8(r00)
+             312:  261(fvec4) CompositeConstruct 311 311 311 311
+             314:    313(ptr) AccessChain 310(ps_output) 48
+                              Store 314 312
+             317:    313(ptr) AccessChain 310(ps_output) 48
+             318:  261(fvec4) Load 317
+                              Store 316(color) 318
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
new file mode 100644 (file)
index 0000000..ebe6a24
--- /dev/null
@@ -0,0 +1,337 @@
+hlsl.intrinsics.promote.outputs.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float color})
+0:20    Function Parameters: 
+0:?     Sequence
+0:37      clamp (temp float)
+0:37        fpos: direct index for structure (layout(offset=52 ) uniform float)
+0:37          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:37          Constant:
+0:37            9 (const uint)
+0:37        Constant:
+0:37          0.000000
+0:37        Constant:
+0:37          1.000000
+0:40      Sequence
+0:40        move second child to first child (temp uint)
+0:40          'sizeQueryTemp' (temp uint)
+0:40          textureSize (temp uint)
+0:40            'g_tTex1df4' (uniform texture1D)
+0:40        move second child to first child (temp int)
+0:40          'WidthI' (temp int)
+0:40          Convert uint to int (temp int)
+0:40            'sizeQueryTemp' (temp uint)
+0:41      Sequence
+0:41        move second child to first child (temp uint)
+0:41          'sizeQueryTemp' (temp uint)
+0:41          textureSize (temp uint)
+0:41            'g_tTex1df4' (uniform texture1D)
+0:41            Constant:
+0:41              6 (const uint)
+0:41        move second child to first child (temp int)
+0:41          'WidthI' (temp int)
+0:41          Convert uint to int (temp int)
+0:41            'sizeQueryTemp' (temp uint)
+0:41        move second child to first child (temp uint)
+0:41          'NumberOfLevelsU' (temp uint)
+0:41          textureQueryLevels (temp uint)
+0:41            'g_tTex1df4' (uniform texture1D)
+0:42      Sequence
+0:42        move second child to first child (temp uint)
+0:42          'sizeQueryTemp' (temp uint)
+0:42          textureSize (temp uint)
+0:42            'g_tTex1df4' (uniform texture1D)
+0:42            Constant:
+0:42              6 (const uint)
+0:42        move second child to first child (temp uint)
+0:42          'WidthU' (temp uint)
+0:42          'sizeQueryTemp' (temp uint)
+0:42        move second child to first child (temp int)
+0:42          'NumberOfLevelsI' (temp int)
+0:42          Convert uint to int (temp int)
+0:42            textureQueryLevels (temp uint)
+0:42              'g_tTex1df4' (uniform texture1D)
+0:43      Sequence
+0:43        move second child to first child (temp uint)
+0:43          'sizeQueryTemp' (temp uint)
+0:43          textureSize (temp uint)
+0:43            'g_tTex1df4' (uniform texture1D)
+0:43            Constant:
+0:43              6 (const uint)
+0:43        move second child to first child (temp int)
+0:43          'WidthI' (temp int)
+0:43          Convert uint to int (temp int)
+0:43            'sizeQueryTemp' (temp uint)
+0:43        move second child to first child (temp int)
+0:43          'NumberOfLevelsI' (temp int)
+0:43          Convert uint to int (temp int)
+0:43            textureQueryLevels (temp uint)
+0:43              'g_tTex1df4' (uniform texture1D)
+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          'ps_output' (temp structure{temp 4-component vector of float color})
+0:47          Constant:
+0:47            0 (const int)
+0:47        Constant:
+0:47          0.000000
+0:47          0.000000
+0:47          0.000000
+0:47          0.000000
+0:48      Sequence
+0:48        Sequence
+0:48          move second child to first child (temp 4-component vector of float)
+0:?             'color' (layout(location=0 ) out 4-component vector of float)
+0:48            color: direct index for structure (temp 4-component vector of float)
+0:48              'ps_output' (temp structure{temp 4-component vector of float color})
+0:48              Constant:
+0:48                0 (const int)
+0:48        Branch: Return
+0:?   Linker Objects
+0:?     'color' (layout(location=0 ) out 4-component vector of float)
+0:?     'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float color})
+0:20    Function Parameters: 
+0:?     Sequence
+0:37      clamp (temp float)
+0:37        fpos: direct index for structure (layout(offset=52 ) uniform float)
+0:37          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+0:37          Constant:
+0:37            9 (const uint)
+0:37        Constant:
+0:37          0.000000
+0:37        Constant:
+0:37          1.000000
+0:40      Sequence
+0:40        move second child to first child (temp uint)
+0:40          'sizeQueryTemp' (temp uint)
+0:40          textureSize (temp uint)
+0:40            'g_tTex1df4' (uniform texture1D)
+0:40        move second child to first child (temp int)
+0:40          'WidthI' (temp int)
+0:40          Convert uint to int (temp int)
+0:40            'sizeQueryTemp' (temp uint)
+0:41      Sequence
+0:41        move second child to first child (temp uint)
+0:41          'sizeQueryTemp' (temp uint)
+0:41          textureSize (temp uint)
+0:41            'g_tTex1df4' (uniform texture1D)
+0:41            Constant:
+0:41              6 (const uint)
+0:41        move second child to first child (temp int)
+0:41          'WidthI' (temp int)
+0:41          Convert uint to int (temp int)
+0:41            'sizeQueryTemp' (temp uint)
+0:41        move second child to first child (temp uint)
+0:41          'NumberOfLevelsU' (temp uint)
+0:41          textureQueryLevels (temp uint)
+0:41            'g_tTex1df4' (uniform texture1D)
+0:42      Sequence
+0:42        move second child to first child (temp uint)
+0:42          'sizeQueryTemp' (temp uint)
+0:42          textureSize (temp uint)
+0:42            'g_tTex1df4' (uniform texture1D)
+0:42            Constant:
+0:42              6 (const uint)
+0:42        move second child to first child (temp uint)
+0:42          'WidthU' (temp uint)
+0:42          'sizeQueryTemp' (temp uint)
+0:42        move second child to first child (temp int)
+0:42          'NumberOfLevelsI' (temp int)
+0:42          Convert uint to int (temp int)
+0:42            textureQueryLevels (temp uint)
+0:42              'g_tTex1df4' (uniform texture1D)
+0:43      Sequence
+0:43        move second child to first child (temp uint)
+0:43          'sizeQueryTemp' (temp uint)
+0:43          textureSize (temp uint)
+0:43            'g_tTex1df4' (uniform texture1D)
+0:43            Constant:
+0:43              6 (const uint)
+0:43        move second child to first child (temp int)
+0:43          'WidthI' (temp int)
+0:43          Convert uint to int (temp int)
+0:43            'sizeQueryTemp' (temp uint)
+0:43        move second child to first child (temp int)
+0:43          'NumberOfLevelsI' (temp int)
+0:43          Convert uint to int (temp int)
+0:43            textureQueryLevels (temp uint)
+0:43              'g_tTex1df4' (uniform texture1D)
+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          'ps_output' (temp structure{temp 4-component vector of float color})
+0:47          Constant:
+0:47            0 (const int)
+0:47        Constant:
+0:47          0.000000
+0:47          0.000000
+0:47          0.000000
+0:47          0.000000
+0:48      Sequence
+0:48        Sequence
+0:48          move second child to first child (temp 4-component vector of float)
+0:?             'color' (layout(location=0 ) out 4-component vector of float)
+0:48            color: direct index for structure (temp 4-component vector of float)
+0:48              'ps_output' (temp structure{temp 4-component vector of float color})
+0:48              Constant:
+0:48                0 (const int)
+0:48        Branch: Return
+0:?   Linker Objects
+0:?     'color' (layout(location=0 ) out 4-component vector of float)
+0:?     'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos})
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 76
+
+                              Capability Shader
+                              Capability Sampled1D
+                              Capability SampledBuffer
+                              Capability ImageQuery
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 68
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 12  "$Global"
+                              MemberName 12($Global) 0  "i"
+                              MemberName 12($Global) 1  "u"
+                              MemberName 12($Global) 2  "f"
+                              MemberName 12($Global) 3  "b"
+                              MemberName 12($Global) 4  "i2"
+                              MemberName 12($Global) 5  "u2"
+                              MemberName 12($Global) 6  "f2"
+                              MemberName 12($Global) 7  "b2"
+                              MemberName 12($Global) 8  "upos"
+                              MemberName 12($Global) 9  "fpos"
+                              Name 14  ""
+                              Name 23  "sizeQueryTemp"
+                              Name 26  "g_tTex1df4"
+                              Name 30  "WidthI"
+                              Name 33  "sizeQueryTemp"
+                              Name 39  "NumberOfLevelsU"
+                              Name 42  "sizeQueryTemp"
+                              Name 45  "WidthU"
+                              Name 47  "NumberOfLevelsI"
+                              Name 51  "sizeQueryTemp"
+                              Name 60  "PS_OUTPUT"
+                              MemberName 60(PS_OUTPUT) 0  "color"
+                              Name 62  "ps_output"
+                              Name 68  "color"
+                              Name 75  "g_tTexbfs"
+                              MemberDecorate 12($Global) 0 Offset 0
+                              MemberDecorate 12($Global) 1 Offset 4
+                              MemberDecorate 12($Global) 2 Offset 8
+                              MemberDecorate 12($Global) 3 Offset 12
+                              MemberDecorate 12($Global) 4 Offset 16
+                              MemberDecorate 12($Global) 5 Offset 24
+                              MemberDecorate 12($Global) 6 Offset 32
+                              MemberDecorate 12($Global) 7 Offset 40
+                              MemberDecorate 12($Global) 8 Offset 48
+                              MemberDecorate 12($Global) 9 Offset 52
+                              Decorate 12($Global) Block
+                              Decorate 14 DescriptorSet 0
+                              Decorate 26(g_tTex1df4) DescriptorSet 0
+                              Decorate 68(color) Location 0
+                              Decorate 75(g_tTexbfs) DescriptorSet 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypeInt 32 0
+               8:             TypeFloat 32
+               9:             TypeVector 6(int) 2
+              10:             TypeVector 7(int) 2
+              11:             TypeVector 8(float) 2
+     12($Global):             TypeStruct 6(int) 7(int) 8(float) 7(int) 9(ivec2) 10(ivec2) 11(fvec2) 10(ivec2) 7(int) 8(float)
+              13:             TypePointer Uniform 12($Global)
+              14:     13(ptr) Variable Uniform
+              15:      6(int) Constant 9
+              16:             TypePointer Uniform 8(float)
+              19:    8(float) Constant 0
+              20:    8(float) Constant 1065353216
+              22:             TypePointer Function 7(int)
+              24:             TypeImage 8(float) 1D sampled format:Unknown
+              25:             TypePointer UniformConstant 24
+  26(g_tTex1df4):     25(ptr) Variable UniformConstant
+              29:             TypePointer Function 6(int)
+              35:      7(int) Constant 6
+              59:             TypeVector 8(float) 4
+   60(PS_OUTPUT):             TypeStruct 59(fvec4)
+              61:             TypePointer Function 60(PS_OUTPUT)
+              63:      6(int) Constant 0
+              64:   59(fvec4) ConstantComposite 19 19 19 19
+              65:             TypePointer Function 59(fvec4)
+              67:             TypePointer Output 59(fvec4)
+       68(color):     67(ptr) Variable Output
+              72:             TypeImage 8(float) Buffer sampled format:R32f
+              73:             TypeSampledImage 72
+              74:             TypePointer UniformConstant 73
+   75(g_tTexbfs):     74(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+23(sizeQueryTemp):     22(ptr) Variable Function
+      30(WidthI):     29(ptr) Variable Function
+33(sizeQueryTemp):     22(ptr) Variable Function
+39(NumberOfLevelsU):     22(ptr) Variable Function
+42(sizeQueryTemp):     22(ptr) Variable Function
+      45(WidthU):     22(ptr) Variable Function
+47(NumberOfLevelsI):     29(ptr) Variable Function
+51(sizeQueryTemp):     22(ptr) Variable Function
+   62(ps_output):     61(ptr) Variable Function
+              17:     16(ptr) AccessChain 14 15
+              18:    8(float) Load 17
+              21:    8(float) ExtInst 1(GLSL.std.450) 43(FClamp) 18 19 20
+              27:          24 Load 26(g_tTex1df4)
+              28:      6(int) ImageQuerySize 27
+                              Store 23(sizeQueryTemp) 28
+              31:      7(int) Load 23(sizeQueryTemp)
+              32:      6(int) Bitcast 31
+                              Store 30(WidthI) 32
+              34:          24 Load 26(g_tTex1df4)
+              36:      6(int) ImageQuerySizeLod 34 35
+                              Store 33(sizeQueryTemp) 36
+              37:      7(int) Load 33(sizeQueryTemp)
+              38:      6(int) Bitcast 37
+                              Store 30(WidthI) 38
+              40:          24 Load 26(g_tTex1df4)
+              41:      6(int) ImageQueryLevels 40
+                              Store 39(NumberOfLevelsU) 41
+              43:          24 Load 26(g_tTex1df4)
+              44:      6(int) ImageQuerySizeLod 43 35
+                              Store 42(sizeQueryTemp) 44
+              46:      7(int) Load 42(sizeQueryTemp)
+                              Store 45(WidthU) 46
+              48:          24 Load 26(g_tTex1df4)
+              49:      6(int) ImageQueryLevels 48
+              50:      6(int) Bitcast 49
+                              Store 47(NumberOfLevelsI) 50
+              52:          24 Load 26(g_tTex1df4)
+              53:      6(int) ImageQuerySizeLod 52 35
+                              Store 51(sizeQueryTemp) 53
+              54:      7(int) Load 51(sizeQueryTemp)
+              55:      6(int) Bitcast 54
+                              Store 30(WidthI) 55
+              56:          24 Load 26(g_tTex1df4)
+              57:      6(int) ImageQueryLevels 56
+              58:      6(int) Bitcast 57
+                              Store 47(NumberOfLevelsI) 58
+              66:     65(ptr) AccessChain 62(ps_output) 63
+                              Store 66 64
+              69:     65(ptr) AccessChain 62(ps_output) 63
+              70:   59(fvec4) Load 69
+                              Store 68(color) 70
+                              Return
+                              FunctionEnd
index 7e7a511..c3a5513 100644 (file)
@@ -40,9 +40,9 @@ Shader version: 450
 0:16        'inF0' (in float)
 0:17      hyp. cosine (temp float)
 0:17        'inF0' (in float)
-0:18      bitCount (temp uint)
+0:18      bitCount (temp int)
 0:18        Constant:
-0:18          7 (const uint)
+0:18          7 (const int)
 0:19      degrees (temp float)
 0:19        'inF0' (in float)
 0:23      exp (temp float)
@@ -96,9 +96,9 @@ Shader version: 450
 0:42        'inF1' (in float)
 0:43      radians (temp float)
 0:43        'inF0' (in float)
-0:44      bitFieldReverse (temp uint)
+0:44      bitFieldReverse (temp int)
 0:44        Constant:
-0:44          2 (const uint)
+0:44          2 (const int)
 0:45      roundEven (temp float)
 0:45        'inF0' (in float)
 0:46      inverse sqrt (temp float)
@@ -190,10 +190,10 @@ Shader version: 450
 0:84        'inF0' (in 2-component vector of float)
 0:85      hyp. cosine (temp 2-component vector of float)
 0:85        'inF0' (in 2-component vector of float)
-0:?       bitCount (temp 2-component vector of uint)
+0:?       bitCount (temp 2-component vector of int)
 0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
+0:?           7 (const int)
+0:?           3 (const int)
 0:87      degrees (temp 2-component vector of float)
 0:87        'inF0' (in 2-component vector of float)
 0:88      distance (temp float)
@@ -269,10 +269,10 @@ Shader version: 450
 0:118        'inF1' (in 2-component vector of float)
 0:118        Constant:
 0:118          2.000000
-0:?       bitFieldReverse (temp 2-component vector of uint)
+0:?       bitFieldReverse (temp 2-component vector of int)
 0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
+0:?           1 (const int)
+0:?           2 (const int)
 0:120      roundEven (temp 2-component vector of float)
 0:120        'inF0' (in 2-component vector of float)
 0:121      inverse sqrt (temp 2-component vector of float)
@@ -356,11 +356,11 @@ Shader version: 450
 0:154        'inF0' (in 3-component vector of float)
 0:155      hyp. cosine (temp 3-component vector of float)
 0:155        'inF0' (in 3-component vector of float)
-0:?       bitCount (temp 3-component vector of uint)
+0:?       bitCount (temp 3-component vector of int)
 0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:?           5 (const uint)
+0:?           7 (const int)
+0:?           3 (const int)
+0:?           5 (const int)
 0:157      cross-product (temp 3-component vector of float)
 0:157        'inF0' (in 3-component vector of float)
 0:157        'inF1' (in 3-component vector of float)
@@ -439,11 +439,11 @@ Shader version: 450
 0:189        'inF1' (in 3-component vector of float)
 0:189        Constant:
 0:189          2.000000
-0:?       bitFieldReverse (temp 3-component vector of uint)
+0:?       bitFieldReverse (temp 3-component vector of int)
 0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:?           3 (const uint)
+0:?           1 (const int)
+0:?           2 (const int)
+0:?           3 (const int)
 0:191      roundEven (temp 3-component vector of float)
 0:191        'inF0' (in 3-component vector of float)
 0:192      inverse sqrt (temp 3-component vector of float)
@@ -528,12 +528,12 @@ Shader version: 450
 0:225        'inF0' (in 4-component vector of float)
 0:226      hyp. cosine (temp 4-component vector of float)
 0:226        'inF0' (in 4-component vector of float)
-0:?       bitCount (temp 4-component vector of uint)
+0:?       bitCount (temp 4-component vector of int)
 0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:?           5 (const uint)
-0:?           2 (const uint)
+0:?           7 (const int)
+0:?           3 (const int)
+0:?           5 (const int)
+0:?           2 (const int)
 0:228      degrees (temp 4-component vector of float)
 0:228        'inF0' (in 4-component vector of float)
 0:229      distance (temp float)
@@ -629,12 +629,12 @@ Shader version: 450
 0:260        'inF1' (in 4-component vector of float)
 0:260        Constant:
 0:260          2.000000
-0:?       bitFieldReverse (temp 4-component vector of uint)
+0:?       bitFieldReverse (temp 4-component vector of int)
 0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:?           3 (const uint)
-0:?           4 (const uint)
+0:?           1 (const int)
+0:?           2 (const int)
+0:?           3 (const int)
+0:?           4 (const int)
 0:262      roundEven (temp 4-component vector of float)
 0:262        'inF0' (in 4-component vector of float)
 0:263      inverse sqrt (temp 4-component vector of float)
@@ -1438,9 +1438,9 @@ Shader version: 450
 0:16        'inF0' (in float)
 0:17      hyp. cosine (temp float)
 0:17        'inF0' (in float)
-0:18      bitCount (temp uint)
+0:18      bitCount (temp int)
 0:18        Constant:
-0:18          7 (const uint)
+0:18          7 (const int)
 0:19      degrees (temp float)
 0:19        'inF0' (in float)
 0:23      exp (temp float)
@@ -1494,9 +1494,9 @@ Shader version: 450
 0:42        'inF1' (in float)
 0:43      radians (temp float)
 0:43        'inF0' (in float)
-0:44      bitFieldReverse (temp uint)
+0:44      bitFieldReverse (temp int)
 0:44        Constant:
-0:44          2 (const uint)
+0:44          2 (const int)
 0:45      roundEven (temp float)
 0:45        'inF0' (in float)
 0:46      inverse sqrt (temp float)
@@ -1588,10 +1588,10 @@ Shader version: 450
 0:84        'inF0' (in 2-component vector of float)
 0:85      hyp. cosine (temp 2-component vector of float)
 0:85        'inF0' (in 2-component vector of float)
-0:?       bitCount (temp 2-component vector of uint)
+0:?       bitCount (temp 2-component vector of int)
 0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
+0:?           7 (const int)
+0:?           3 (const int)
 0:87      degrees (temp 2-component vector of float)
 0:87        'inF0' (in 2-component vector of float)
 0:88      distance (temp float)
@@ -1667,10 +1667,10 @@ Shader version: 450
 0:118        'inF1' (in 2-component vector of float)
 0:118        Constant:
 0:118          2.000000
-0:?       bitFieldReverse (temp 2-component vector of uint)
+0:?       bitFieldReverse (temp 2-component vector of int)
 0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
+0:?           1 (const int)
+0:?           2 (const int)
 0:120      roundEven (temp 2-component vector of float)
 0:120        'inF0' (in 2-component vector of float)
 0:121      inverse sqrt (temp 2-component vector of float)
@@ -1754,11 +1754,11 @@ Shader version: 450
 0:154        'inF0' (in 3-component vector of float)
 0:155      hyp. cosine (temp 3-component vector of float)
 0:155        'inF0' (in 3-component vector of float)
-0:?       bitCount (temp 3-component vector of uint)
+0:?       bitCount (temp 3-component vector of int)
 0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:?           5 (const uint)
+0:?           7 (const int)
+0:?           3 (const int)
+0:?           5 (const int)
 0:157      cross-product (temp 3-component vector of float)
 0:157        'inF0' (in 3-component vector of float)
 0:157        'inF1' (in 3-component vector of float)
@@ -1837,11 +1837,11 @@ Shader version: 450
 0:189        'inF1' (in 3-component vector of float)
 0:189        Constant:
 0:189          2.000000
-0:?       bitFieldReverse (temp 3-component vector of uint)
+0:?       bitFieldReverse (temp 3-component vector of int)
 0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:?           3 (const uint)
+0:?           1 (const int)
+0:?           2 (const int)
+0:?           3 (const int)
 0:191      roundEven (temp 3-component vector of float)
 0:191        'inF0' (in 3-component vector of float)
 0:192      inverse sqrt (temp 3-component vector of float)
@@ -1926,12 +1926,12 @@ Shader version: 450
 0:225        'inF0' (in 4-component vector of float)
 0:226      hyp. cosine (temp 4-component vector of float)
 0:226        'inF0' (in 4-component vector of float)
-0:?       bitCount (temp 4-component vector of uint)
+0:?       bitCount (temp 4-component vector of int)
 0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:?           5 (const uint)
-0:?           2 (const uint)
+0:?           7 (const int)
+0:?           3 (const int)
+0:?           5 (const int)
+0:?           2 (const int)
 0:228      degrees (temp 4-component vector of float)
 0:228        'inF0' (in 4-component vector of float)
 0:229      distance (temp float)
@@ -2027,12 +2027,12 @@ Shader version: 450
 0:260        'inF1' (in 4-component vector of float)
 0:260        Constant:
 0:260          2.000000
-0:?       bitFieldReverse (temp 4-component vector of uint)
+0:?       bitFieldReverse (temp 4-component vector of int)
 0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:?           3 (const uint)
-0:?           4 (const uint)
+0:?           1 (const int)
+0:?           2 (const int)
+0:?           3 (const int)
+0:?           4 (const int)
 0:262      roundEven (temp 4-component vector of float)
 0:262        'inF0' (in 4-component vector of float)
 0:263      inverse sqrt (temp 4-component vector of float)
@@ -2793,7 +2793,7 @@ Shader version: 450
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 1238
+// Id's are bound by 1240
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -2871,57 +2871,57 @@ Shader version: 450
                               Name 126  "inFM3x3"
                               Name 127  "inFM3x4"
                               Name 128  "inFM2x4"
-                              Name 183  "ResType"
-                              Name 317  "ResType"
-                              Name 465  "ResType"
-                              Name 618  "ResType"
-                              Name 751  "ResType"
-                              Name 871  "ResType"
-                              Name 994  "ResType"
-                              Name 1062  "r0"
-                              Name 1066  "r1"
-                              Name 1070  "r2"
-                              Name 1074  "r3"
-                              Name 1078  "r4"
-                              Name 1082  "r5"
-                              Name 1086  "r6"
-                              Name 1090  "r7"
-                              Name 1094  "r8"
-                              Name 1098  "r0"
-                              Name 1102  "r1"
-                              Name 1106  "r2"
-                              Name 1110  "r3"
-                              Name 1114  "r4"
-                              Name 1118  "r5"
-                              Name 1122  "r6"
-                              Name 1126  "r7"
-                              Name 1130  "r8"
-                              Name 1134  "r0"
-                              Name 1138  "r1"
-                              Name 1142  "r2"
-                              Name 1146  "r3"
-                              Name 1150  "r4"
-                              Name 1154  "r5"
-                              Name 1158  "r6"
-                              Name 1162  "r7"
-                              Name 1166  "r8"
-                              Name 1170  "r00"
-                              Name 1174  "r01"
-                              Name 1178  "r02"
-                              Name 1182  "r03"
-                              Name 1186  "r04"
-                              Name 1190  "r05"
-                              Name 1194  "r06"
-                              Name 1198  "r07"
-                              Name 1202  "r08"
-                              Name 1206  "r09"
-                              Name 1210  "r10"
-                              Name 1214  "r11"
-                              Name 1218  "r12"
-                              Name 1222  "r13"
-                              Name 1226  "r14"
-                              Name 1230  "r15"
-                              Name 1234  "r16"
+                              Name 182  "ResType"
+                              Name 316  "ResType"
+                              Name 464  "ResType"
+                              Name 620  "ResType"
+                              Name 753  "ResType"
+                              Name 873  "ResType"
+                              Name 996  "ResType"
+                              Name 1064  "r0"
+                              Name 1068  "r1"
+                              Name 1072  "r2"
+                              Name 1076  "r3"
+                              Name 1080  "r4"
+                              Name 1084  "r5"
+                              Name 1088  "r6"
+                              Name 1092  "r7"
+                              Name 1096  "r8"
+                              Name 1100  "r0"
+                              Name 1104  "r1"
+                              Name 1108  "r2"
+                              Name 1112  "r3"
+                              Name 1116  "r4"
+                              Name 1120  "r5"
+                              Name 1124  "r6"
+                              Name 1128  "r7"
+                              Name 1132  "r8"
+                              Name 1136  "r0"
+                              Name 1140  "r1"
+                              Name 1144  "r2"
+                              Name 1148  "r3"
+                              Name 1152  "r4"
+                              Name 1156  "r5"
+                              Name 1160  "r6"
+                              Name 1164  "r7"
+                              Name 1168  "r8"
+                              Name 1172  "r00"
+                              Name 1176  "r01"
+                              Name 1180  "r02"
+                              Name 1184  "r03"
+                              Name 1188  "r04"
+                              Name 1192  "r05"
+                              Name 1196  "r06"
+                              Name 1200  "r07"
+                              Name 1204  "r08"
+                              Name 1208  "r09"
+                              Name 1212  "r10"
+                              Name 1216  "r11"
+                              Name 1220  "r12"
+                              Name 1224  "r13"
+                              Name 1228  "r14"
+                              Name 1232  "r15"
+                              Name 1236  "r16"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -2968,47 +2968,49 @@ Shader version: 450
              119:             TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 112(ptr) 114(ptr) 69(ptr) 116(ptr) 118(ptr)
              132:             TypeBool
              143:             TypeInt 32 1
-             164:      8(int) Constant 7
-             172:    143(int) Constant 7
-    183(ResType):             TypeStruct 6(float) 143(int)
-             202:    6(float) Constant 1050288283
-             217:      8(int) Constant 2
-             224:    6(float) Constant 0
-             225:    6(float) Constant 1065353216
-             267:             TypeVector 143(int) 2
-             288:      8(int) Constant 3
-             289:   26(ivec2) ConstantComposite 164 288
-    317(ResType):             TypeStruct 24(fvec2) 267(ivec2)
-             322:             TypeVector 132(bool) 2
-             360:    6(float) Constant 1073741824
-             362:      8(int) Constant 1
-             363:   26(ivec2) ConstantComposite 362 217
-             398:   24(fvec2) ConstantComposite 225 360
-             412:             TypeVector 143(int) 3
-             433:      8(int) Constant 5
-             434:   38(ivec3) ConstantComposite 164 288 433
-    465(ResType):             TypeStruct 36(fvec3) 412(ivec3)
-             470:             TypeVector 132(bool) 3
-             509:   38(ivec3) ConstantComposite 362 217 288
-             544:    6(float) Constant 1077936128
-             545:   36(fvec3) ConstantComposite 225 360 544
-             559:             TypeVector 143(int) 4
-             580:   50(ivec4) ConstantComposite 164 288 433 217
-    618(ResType):             TypeStruct 48(fvec4) 559(ivec4)
-             623:             TypeVector 132(bool) 4
-             662:      8(int) Constant 4
-             663:   50(ivec4) ConstantComposite 362 217 288 662
-             698:    6(float) Constant 1082130432
-             699:   48(fvec4) ConstantComposite 225 360 544 698
-    751(ResType):             TypeStruct 60 267(ivec2)
-             815:   24(fvec2) ConstantComposite 360 360
-             816:          60 ConstantComposite 815 815
-    871(ResType):             TypeStruct 68 412(ivec3)
-             935:   36(fvec3) ConstantComposite 544 544 544
-             936:          68 ConstantComposite 935 935 935
-    994(ResType):             TypeStruct 76 559(ivec4)
-            1058:   48(fvec4) ConstantComposite 698 698 698 698
-            1059:          76 ConstantComposite 1058 1058 1058 1058
+             164:    143(int) Constant 7
+    182(ResType):             TypeStruct 6(float) 143(int)
+             201:    6(float) Constant 1050288283
+             216:    143(int) Constant 2
+             223:    6(float) Constant 0
+             224:    6(float) Constant 1065353216
+             266:             TypeVector 143(int) 2
+             287:    143(int) Constant 3
+             288:  266(ivec2) ConstantComposite 164 287
+    316(ResType):             TypeStruct 24(fvec2) 266(ivec2)
+             321:             TypeVector 132(bool) 2
+             359:    6(float) Constant 1073741824
+             361:    143(int) Constant 1
+             362:  266(ivec2) ConstantComposite 361 216
+             397:   24(fvec2) ConstantComposite 224 359
+             411:             TypeVector 143(int) 3
+             432:    143(int) Constant 5
+             433:  411(ivec3) ConstantComposite 164 287 432
+    464(ResType):             TypeStruct 36(fvec3) 411(ivec3)
+             469:             TypeVector 132(bool) 3
+             508:  411(ivec3) ConstantComposite 361 216 287
+             543:    6(float) Constant 1077936128
+             544:   36(fvec3) ConstantComposite 224 359 543
+             558:             TypeVector 143(int) 4
+             579:  558(ivec4) ConstantComposite 164 287 432 216
+             589:      8(int) Constant 1
+             595:      8(int) Constant 2
+             598:      8(int) Constant 3
+    620(ResType):             TypeStruct 48(fvec4) 558(ivec4)
+             625:             TypeVector 132(bool) 4
+             664:    143(int) Constant 4
+             665:  558(ivec4) ConstantComposite 361 216 287 664
+             700:    6(float) Constant 1082130432
+             701:   48(fvec4) ConstantComposite 224 359 543 700
+    753(ResType):             TypeStruct 60 266(ivec2)
+             817:   24(fvec2) ConstantComposite 359 359
+             818:          60 ConstantComposite 817 817
+    873(ResType):             TypeStruct 68 411(ivec3)
+             937:   36(fvec3) ConstantComposite 543 543 543
+             938:          68 ConstantComposite 937 937 937
+    996(ResType):             TypeStruct 76 558(ivec4)
+            1060:   48(fvec4) ConstantComposite 700 700 700 700
+            1061:          76 ConstantComposite 1060 1060 1060 1060
 4(VertexShaderFunction):           2 Function None 3
                5:             Label
                               FunctionEnd
@@ -3050,98 +3052,98 @@ Shader version: 450
              161:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 160
              162:    6(float) Load 11(inF0)
              163:    6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 162
-             165:      8(int) BitCount 164
+             165:    143(int) BitCount 164
              166:    6(float) Load 11(inF0)
              167:    6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 166
              168:    6(float) Load 11(inF0)
              169:    6(float) ExtInst 1(GLSL.std.450) 27(Exp) 168
              170:    6(float) Load 11(inF0)
              171:    6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 170
-             173:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172
-             174:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172
-             175:    6(float) Load 11(inF0)
-             176:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 175
-             177:    6(float) Load 11(inF0)
-             178:    6(float) Load 12(inF1)
-             179:    6(float) FMod 177 178
-             180:    6(float) Load 11(inF0)
-             181:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 180
-             182:    6(float) Load 11(inF0)
-             184:183(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 182
-             185:    143(int) CompositeExtract 184 1
-                              Store 12(inF1) 185
-             186:    6(float) CompositeExtract 184 0
-             187:    6(float) Load 11(inF0)
-             188:   132(bool) IsInf 187
-             189:    6(float) Load 11(inF0)
-             190:   132(bool) IsNan 189
-             191:    6(float) Load 11(inF0)
-             192:    6(float) Load 12(inF1)
-             193:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 191 192
-             194:    6(float) Load 11(inF0)
-             195:    6(float) Load 12(inF1)
-             196:    6(float) Load 13(inF2)
-             197:    6(float) ExtInst 1(GLSL.std.450) 46(FMix) 194 195 196
-             198:    6(float) Load 11(inF0)
-             199:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 198
-             200:    6(float) Load 11(inF0)
-             201:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 200
-             203:    6(float) FMul 201 202
-             204:    6(float) Load 11(inF0)
-             205:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 204
-             206:    6(float) Load 11(inF0)
-             207:    6(float) Load 12(inF1)
-             208:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 206 207
-             209:    6(float) Load 11(inF0)
-             210:    6(float) Load 12(inF1)
-             211:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 209 210
-             212:    6(float) Load 11(inF0)
-             213:    6(float) Load 12(inF1)
-             214:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 212 213
-             215:    6(float) Load 11(inF0)
-             216:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 215
-             218:      8(int) BitReverse 217
-             219:    6(float) Load 11(inF0)
-             220:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 219
-             221:    6(float) Load 11(inF0)
-             222:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 221
-             223:    6(float) Load 11(inF0)
-             226:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 223 224 225
-             227:    6(float) Load 11(inF0)
-             228:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 227
-             229:    6(float) Load 11(inF0)
-             230:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 229
-             231:    6(float) Load 11(inF0)
-             232:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 231
-                              Store 12(inF1) 232
-             233:    6(float) Load 11(inF0)
-             234:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 233
-                              Store 13(inF2) 234
-             235:    6(float) Load 11(inF0)
-             236:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 235
-             237:    6(float) Load 11(inF0)
-             238:    6(float) Load 12(inF1)
-             239:    6(float) Load 13(inF2)
-             240:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 237 238 239
-             241:    6(float) Load 11(inF0)
-             242:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 241
-             243:    6(float) Load 11(inF0)
-             244:    6(float) Load 12(inF1)
-             245:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 243 244
-             246:    6(float) Load 11(inF0)
-             247:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 246
-             248:    6(float) Load 11(inF0)
-             249:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 248
-             250:    6(float) Load 11(inF0)
-             251:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 250
-                              ReturnValue 224
+             172:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
+             173:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
+             174:    6(float) Load 11(inF0)
+             175:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 174
+             176:    6(float) Load 11(inF0)
+             177:    6(float) Load 12(inF1)
+             178:    6(float) FMod 176 177
+             179:    6(float) Load 11(inF0)
+             180:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 179
+             181:    6(float) Load 11(inF0)
+             183:182(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 181
+             184:    143(int) CompositeExtract 183 1
+                              Store 12(inF1) 184
+             185:    6(float) CompositeExtract 183 0
+             186:    6(float) Load 11(inF0)
+             187:   132(bool) IsInf 186
+             188:    6(float) Load 11(inF0)
+             189:   132(bool) IsNan 188
+             190:    6(float) Load 11(inF0)
+             191:    6(float) Load 12(inF1)
+             192:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 190 191
+             193:    6(float) Load 11(inF0)
+             194:    6(float) Load 12(inF1)
+             195:    6(float) Load 13(inF2)
+             196:    6(float) ExtInst 1(GLSL.std.450) 46(FMix) 193 194 195
+             197:    6(float) Load 11(inF0)
+             198:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 197
+             199:    6(float) Load 11(inF0)
+             200:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 199
+             202:    6(float) FMul 200 201
+             203:    6(float) Load 11(inF0)
+             204:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 203
+             205:    6(float) Load 11(inF0)
+             206:    6(float) Load 12(inF1)
+             207:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 205 206
+             208:    6(float) Load 11(inF0)
+             209:    6(float) Load 12(inF1)
+             210:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 208 209
+             211:    6(float) Load 11(inF0)
+             212:    6(float) Load 12(inF1)
+             213:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 211 212
+             214:    6(float) Load 11(inF0)
+             215:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 214
+             217:    143(int) BitReverse 216
+             218:    6(float) Load 11(inF0)
+             219:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 218
+             220:    6(float) Load 11(inF0)
+             221:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 220
+             222:    6(float) Load 11(inF0)
+             225:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 222 223 224
+             226:    6(float) Load 11(inF0)
+             227:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 226
+             228:    6(float) Load 11(inF0)
+             229:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 228
+             230:    6(float) Load 11(inF0)
+             231:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 230
+                              Store 12(inF1) 231
+             232:    6(float) Load 11(inF0)
+             233:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 232
+                              Store 13(inF2) 233
+             234:    6(float) Load 11(inF0)
+             235:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 234
+             236:    6(float) Load 11(inF0)
+             237:    6(float) Load 12(inF1)
+             238:    6(float) Load 13(inF2)
+             239:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 236 237 238
+             240:    6(float) Load 11(inF0)
+             241:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 240
+             242:    6(float) Load 11(inF0)
+             243:    6(float) Load 12(inF1)
+             244:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 242 243
+             245:    6(float) Load 11(inF0)
+             246:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 245
+             247:    6(float) Load 11(inF0)
+             248:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 247
+             249:    6(float) Load 11(inF0)
+             250:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 249
+                              ReturnValue 223
                               FunctionEnd
 22(VertexShaderFunction1(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 224
+                              ReturnValue 223
                               FunctionEnd
 34(VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2;):   24(fvec2) Function None 28
         29(inF0):     25(ptr) FunctionParameter
@@ -3150,144 +3152,144 @@ Shader version: 450
         32(inU0):     27(ptr) FunctionParameter
         33(inU1):     27(ptr) FunctionParameter
               35:             Label
-             256:   24(fvec2) Load 29(inF0)
-             257:   132(bool) All 256
-             258:   24(fvec2) Load 29(inF0)
-             259:   24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 258
-             260:   24(fvec2) Load 29(inF0)
-             261:   24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 260
-             262:   24(fvec2) Load 29(inF0)
-             263:   132(bool) Any 262
-             264:   24(fvec2) Load 29(inF0)
-             265:   24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 264
-             266:   24(fvec2) Load 29(inF0)
-             268:  267(ivec2) Bitcast 266
-             269:   24(fvec2) Load 29(inF0)
-             270:   26(ivec2) Bitcast 269
-             271:   26(ivec2) Load 32(inU0)
-             272:   24(fvec2) Bitcast 271
-             273:   24(fvec2) Load 29(inF0)
-             274:   24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 273
-             275:   24(fvec2) Load 29(inF0)
-             276:   24(fvec2) Load 30(inF1)
-             277:   24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 275 276
-             278:   24(fvec2) Load 29(inF0)
-             279:   24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 278
-             280:   24(fvec2) Load 29(inF0)
-             281:   24(fvec2) Load 30(inF1)
-             282:   24(fvec2) Load 31(inF2)
-             283:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 280 281 282
-             284:   24(fvec2) Load 29(inF0)
-             285:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 284
-             286:   24(fvec2) Load 29(inF0)
-             287:   24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 286
-             290:   26(ivec2) BitCount 289
-             291:   24(fvec2) Load 29(inF0)
-             292:   24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 291
-             293:   24(fvec2) Load 29(inF0)
-             294:   24(fvec2) Load 30(inF1)
-             295:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 293 294
-             296:   24(fvec2) Load 29(inF0)
-             297:   24(fvec2) Load 30(inF1)
-             298:    6(float) Dot 296 297
-             299:   24(fvec2) Load 29(inF0)
-             300:   24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 299
-             301:   24(fvec2) Load 29(inF0)
-             302:   24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 301
-             303:   24(fvec2) Load 29(inF0)
-             304:   24(fvec2) Load 30(inF1)
-             305:   24(fvec2) Load 31(inF2)
-             306:   24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 303 304 305
-             307:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172
-             308:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172
-             309:   24(fvec2) Load 29(inF0)
-             310:   24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 309
-             311:   24(fvec2) Load 29(inF0)
-             312:   24(fvec2) Load 30(inF1)
-             313:   24(fvec2) FMod 311 312
-             314:   24(fvec2) Load 29(inF0)
-             315:   24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 314
-             316:   24(fvec2) Load 29(inF0)
-             318:317(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 316
-             319:  267(ivec2) CompositeExtract 318 1
-                              Store 30(inF1) 319
-             320:   24(fvec2) CompositeExtract 318 0
-             321:   24(fvec2) Load 29(inF0)
-             323:  322(bvec2) IsInf 321
-             324:   24(fvec2) Load 29(inF0)
-             325:  322(bvec2) IsNan 324
-             326:   24(fvec2) Load 29(inF0)
-             327:   24(fvec2) Load 30(inF1)
-             328:   24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 326 327
-             329:   24(fvec2) Load 29(inF0)
-             330:   24(fvec2) Load 30(inF1)
-             331:   24(fvec2) Load 31(inF2)
-             332:   24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 329 330 331
-             333:   24(fvec2) Load 29(inF0)
-             334:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 333
-             335:   24(fvec2) Load 29(inF0)
-             336:   24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 335
-             337:   24(fvec2) Load 29(inF0)
-             338:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 337
-             339:   24(fvec2) VectorTimesScalar 338 202
-             340:   24(fvec2) Load 29(inF0)
-             341:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 340
-             342:   24(fvec2) Load 29(inF0)
-             343:   24(fvec2) Load 30(inF1)
-             344:   24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 342 343
-             345:   24(fvec2) Load 29(inF0)
-             346:   24(fvec2) Load 30(inF1)
-             347:   24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 345 346
-             348:   24(fvec2) Load 29(inF0)
-             349:   24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 348
-             350:   24(fvec2) Load 29(inF0)
-             351:   24(fvec2) Load 30(inF1)
-             352:   24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 350 351
-             353:   24(fvec2) Load 29(inF0)
-             354:   24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 353
-             355:   24(fvec2) Load 29(inF0)
-             356:   24(fvec2) Load 30(inF1)
-             357:   24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 355 356
-             358:   24(fvec2) Load 29(inF0)
-             359:   24(fvec2) Load 30(inF1)
-             361:   24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 358 359 360
-             364:   26(ivec2) BitReverse 363
-             365:   24(fvec2) Load 29(inF0)
-             366:   24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 365
-             367:   24(fvec2) Load 29(inF0)
-             368:   24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 367
-             369:   24(fvec2) Load 29(inF0)
+             255:   24(fvec2) Load 29(inF0)
+             256:   132(bool) All 255
+             257:   24(fvec2) Load 29(inF0)
+             258:   24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 257
+             259:   24(fvec2) Load 29(inF0)
+             260:   24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 259
+             261:   24(fvec2) Load 29(inF0)
+             262:   132(bool) Any 261
+             263:   24(fvec2) Load 29(inF0)
+             264:   24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 263
+             265:   24(fvec2) Load 29(inF0)
+             267:  266(ivec2) Bitcast 265
+             268:   24(fvec2) Load 29(inF0)
+             269:   26(ivec2) Bitcast 268
+             270:   26(ivec2) Load 32(inU0)
+             271:   24(fvec2) Bitcast 270
+             272:   24(fvec2) Load 29(inF0)
+             273:   24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 272
+             274:   24(fvec2) Load 29(inF0)
+             275:   24(fvec2) Load 30(inF1)
+             276:   24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 274 275
+             277:   24(fvec2) Load 29(inF0)
+             278:   24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 277
+             279:   24(fvec2) Load 29(inF0)
+             280:   24(fvec2) Load 30(inF1)
+             281:   24(fvec2) Load 31(inF2)
+             282:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 279 280 281
+             283:   24(fvec2) Load 29(inF0)
+             284:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 283
+             285:   24(fvec2) Load 29(inF0)
+             286:   24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 285
+             289:  266(ivec2) BitCount 288
+             290:   24(fvec2) Load 29(inF0)
+             291:   24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 290
+             292:   24(fvec2) Load 29(inF0)
+             293:   24(fvec2) Load 30(inF1)
+             294:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 292 293
+             295:   24(fvec2) Load 29(inF0)
+             296:   24(fvec2) Load 30(inF1)
+             297:    6(float) Dot 295 296
+             298:   24(fvec2) Load 29(inF0)
+             299:   24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 298
+             300:   24(fvec2) Load 29(inF0)
+             301:   24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 300
+             302:   24(fvec2) Load 29(inF0)
+             303:   24(fvec2) Load 30(inF1)
+             304:   24(fvec2) Load 31(inF2)
+             305:   24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 302 303 304
+             306:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
+             307:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
+             308:   24(fvec2) Load 29(inF0)
+             309:   24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 308
+             310:   24(fvec2) Load 29(inF0)
+             311:   24(fvec2) Load 30(inF1)
+             312:   24(fvec2) FMod 310 311
+             313:   24(fvec2) Load 29(inF0)
+             314:   24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 313
+             315:   24(fvec2) Load 29(inF0)
+             317:316(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 315
+             318:  266(ivec2) CompositeExtract 317 1
+                              Store 30(inF1) 318
+             319:   24(fvec2) CompositeExtract 317 0
+             320:   24(fvec2) Load 29(inF0)
+             322:  321(bvec2) IsInf 320
+             323:   24(fvec2) Load 29(inF0)
+             324:  321(bvec2) IsNan 323
+             325:   24(fvec2) Load 29(inF0)
+             326:   24(fvec2) Load 30(inF1)
+             327:   24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 325 326
+             328:   24(fvec2) Load 29(inF0)
+             329:   24(fvec2) Load 30(inF1)
+             330:   24(fvec2) Load 31(inF2)
+             331:   24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 328 329 330
+             332:   24(fvec2) Load 29(inF0)
+             333:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 332
+             334:   24(fvec2) Load 29(inF0)
+             335:   24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 334
+             336:   24(fvec2) Load 29(inF0)
+             337:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 336
+             338:   24(fvec2) VectorTimesScalar 337 201
+             339:   24(fvec2) Load 29(inF0)
+             340:   24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 339
+             341:   24(fvec2) Load 29(inF0)
+             342:   24(fvec2) Load 30(inF1)
+             343:   24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 341 342
+             344:   24(fvec2) Load 29(inF0)
+             345:   24(fvec2) Load 30(inF1)
+             346:   24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 344 345
+             347:   24(fvec2) Load 29(inF0)
+             348:   24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 347
+             349:   24(fvec2) Load 29(inF0)
+             350:   24(fvec2) Load 30(inF1)
+             351:   24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 349 350
+             352:   24(fvec2) Load 29(inF0)
+             353:   24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 352
+             354:   24(fvec2) Load 29(inF0)
+             355:   24(fvec2) Load 30(inF1)
+             356:   24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 354 355
+             357:   24(fvec2) Load 29(inF0)
+             358:   24(fvec2) Load 30(inF1)
+             360:   24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 357 358 359
+             363:  266(ivec2) BitReverse 362
+             364:   24(fvec2) Load 29(inF0)
+             365:   24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 364
+             366:   24(fvec2) Load 29(inF0)
+             367:   24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 366
+             368:   24(fvec2) Load 29(inF0)
+             369:   24(fvec2) CompositeConstruct 223 223
              370:   24(fvec2) CompositeConstruct 224 224
-             371:   24(fvec2) CompositeConstruct 225 225
-             372:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 369 370 371
-             373:   24(fvec2) Load 29(inF0)
-             374:   24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 373
-             375:   24(fvec2) Load 29(inF0)
-             376:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 375
-             377:   24(fvec2) Load 29(inF0)
-             378:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 377
-                              Store 30(inF1) 378
-             379:   24(fvec2) Load 29(inF0)
-             380:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 379
-                              Store 31(inF2) 380
-             381:   24(fvec2) Load 29(inF0)
-             382:   24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 381
-             383:   24(fvec2) Load 29(inF0)
-             384:   24(fvec2) Load 30(inF1)
-             385:   24(fvec2) Load 31(inF2)
-             386:   24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 383 384 385
-             387:   24(fvec2) Load 29(inF0)
-             388:   24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 387
-             389:   24(fvec2) Load 29(inF0)
-             390:   24(fvec2) Load 30(inF1)
-             391:   24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 389 390
-             392:   24(fvec2) Load 29(inF0)
-             393:   24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 392
-             394:   24(fvec2) Load 29(inF0)
-             395:   24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 394
-             396:   24(fvec2) Load 29(inF0)
-             397:   24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 396
-                              ReturnValue 398
+             371:   24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 368 369 370
+             372:   24(fvec2) Load 29(inF0)
+             373:   24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 372
+             374:   24(fvec2) Load 29(inF0)
+             375:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 374
+             376:   24(fvec2) Load 29(inF0)
+             377:   24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 376
+                              Store 30(inF1) 377
+             378:   24(fvec2) Load 29(inF0)
+             379:   24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 378
+                              Store 31(inF2) 379
+             380:   24(fvec2) Load 29(inF0)
+             381:   24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 380
+             382:   24(fvec2) Load 29(inF0)
+             383:   24(fvec2) Load 30(inF1)
+             384:   24(fvec2) Load 31(inF2)
+             385:   24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 382 383 384
+             386:   24(fvec2) Load 29(inF0)
+             387:   24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 386
+             388:   24(fvec2) Load 29(inF0)
+             389:   24(fvec2) Load 30(inF1)
+             390:   24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 388 389
+             391:   24(fvec2) Load 29(inF0)
+             392:   24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 391
+             393:   24(fvec2) Load 29(inF0)
+             394:   24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 393
+             395:   24(fvec2) Load 29(inF0)
+             396:   24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 395
+                              ReturnValue 397
                               FunctionEnd
 46(VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3;):   36(fvec3) Function None 40
         41(inF0):     37(ptr) FunctionParameter
@@ -3296,147 +3298,147 @@ Shader version: 450
         44(inU0):     39(ptr) FunctionParameter
         45(inU1):     39(ptr) FunctionParameter
               47:             Label
-             401:   36(fvec3) Load 41(inF0)
-             402:   132(bool) All 401
-             403:   36(fvec3) Load 41(inF0)
-             404:   36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 403
-             405:   36(fvec3) Load 41(inF0)
-             406:   36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 405
-             407:   36(fvec3) Load 41(inF0)
-             408:   132(bool) Any 407
-             409:   36(fvec3) Load 41(inF0)
-             410:   36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 409
-             411:   36(fvec3) Load 41(inF0)
-             413:  412(ivec3) Bitcast 411
-             414:   36(fvec3) Load 41(inF0)
-             415:   38(ivec3) Bitcast 414
-             416:   38(ivec3) Load 44(inU0)
-             417:   36(fvec3) Bitcast 416
-             418:   36(fvec3) Load 41(inF0)
-             419:   36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 418
-             420:   36(fvec3) Load 41(inF0)
-             421:   36(fvec3) Load 42(inF1)
-             422:   36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 420 421
-             423:   36(fvec3) Load 41(inF0)
-             424:   36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 423
-             425:   36(fvec3) Load 41(inF0)
-             426:   36(fvec3) Load 42(inF1)
-             427:   36(fvec3) Load 43(inF2)
-             428:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 425 426 427
-             429:   36(fvec3) Load 41(inF0)
-             430:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 429
-             431:   36(fvec3) Load 41(inF0)
-             432:   36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 431
-             435:   38(ivec3) BitCount 434
-             436:   36(fvec3) Load 41(inF0)
-             437:   36(fvec3) Load 42(inF1)
-             438:   36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 436 437
-             439:   36(fvec3) Load 41(inF0)
-             440:   36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 439
-             441:   36(fvec3) Load 41(inF0)
-             442:   36(fvec3) Load 42(inF1)
-             443:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 441 442
-             444:   36(fvec3) Load 41(inF0)
-             445:   36(fvec3) Load 42(inF1)
-             446:    6(float) Dot 444 445
-             447:   36(fvec3) Load 41(inF0)
-             448:   36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 447
-             449:   36(fvec3) Load 41(inF0)
-             450:   36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 449
-             451:   36(fvec3) Load 41(inF0)
-             452:   36(fvec3) Load 42(inF1)
-             453:   36(fvec3) Load 43(inF2)
-             454:   36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 451 452 453
-             455:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172
-             456:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172
-             457:   36(fvec3) Load 41(inF0)
-             458:   36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 457
-             459:   36(fvec3) Load 41(inF0)
-             460:   36(fvec3) Load 42(inF1)
-             461:   36(fvec3) FMod 459 460
-             462:   36(fvec3) Load 41(inF0)
-             463:   36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 462
-             464:   36(fvec3) Load 41(inF0)
-             466:465(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 464
-             467:  412(ivec3) CompositeExtract 466 1
-                              Store 42(inF1) 467
-             468:   36(fvec3) CompositeExtract 466 0
-             469:   36(fvec3) Load 41(inF0)
-             471:  470(bvec3) IsInf 469
-             472:   36(fvec3) Load 41(inF0)
-             473:  470(bvec3) IsNan 472
-             474:   36(fvec3) Load 41(inF0)
-             475:   36(fvec3) Load 42(inF1)
-             476:   36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 474 475
-             477:   36(fvec3) Load 41(inF0)
-             478:   36(fvec3) Load 42(inF1)
-             479:   36(fvec3) Load 43(inF2)
-             480:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 477 478 479
-             481:   36(fvec3) Load 41(inF0)
-             482:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 481
-             483:   36(fvec3) Load 41(inF0)
-             484:   36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 483
-             485:   36(fvec3) Load 41(inF0)
-             486:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 485
-             487:   36(fvec3) VectorTimesScalar 486 202
-             488:   36(fvec3) Load 41(inF0)
-             489:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 488
-             490:   36(fvec3) Load 41(inF0)
-             491:   36(fvec3) Load 42(inF1)
-             492:   36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 490 491
-             493:   36(fvec3) Load 41(inF0)
-             494:   36(fvec3) Load 42(inF1)
-             495:   36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 493 494
-             496:   36(fvec3) Load 41(inF0)
-             497:   36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 496
-             498:   36(fvec3) Load 41(inF0)
-             499:   36(fvec3) Load 42(inF1)
-             500:   36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 498 499
-             501:   36(fvec3) Load 41(inF0)
-             502:   36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 501
-             503:   36(fvec3) Load 41(inF0)
-             504:   36(fvec3) Load 42(inF1)
-             505:   36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 503 504
-             506:   36(fvec3) Load 41(inF0)
-             507:   36(fvec3) Load 42(inF1)
-             508:   36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 506 507 360
-             510:   38(ivec3) BitReverse 509
-             511:   36(fvec3) Load 41(inF0)
-             512:   36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 511
-             513:   36(fvec3) Load 41(inF0)
-             514:   36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 513
-             515:   36(fvec3) Load 41(inF0)
+             400:   36(fvec3) Load 41(inF0)
+             401:   132(bool) All 400
+             402:   36(fvec3) Load 41(inF0)
+             403:   36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 402
+             404:   36(fvec3) Load 41(inF0)
+             405:   36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 404
+             406:   36(fvec3) Load 41(inF0)
+             407:   132(bool) Any 406
+             408:   36(fvec3) Load 41(inF0)
+             409:   36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 408
+             410:   36(fvec3) Load 41(inF0)
+             412:  411(ivec3) Bitcast 410
+             413:   36(fvec3) Load 41(inF0)
+             414:   38(ivec3) Bitcast 413
+             415:   38(ivec3) Load 44(inU0)
+             416:   36(fvec3) Bitcast 415
+             417:   36(fvec3) Load 41(inF0)
+             418:   36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 417
+             419:   36(fvec3) Load 41(inF0)
+             420:   36(fvec3) Load 42(inF1)
+             421:   36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 419 420
+             422:   36(fvec3) Load 41(inF0)
+             423:   36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 422
+             424:   36(fvec3) Load 41(inF0)
+             425:   36(fvec3) Load 42(inF1)
+             426:   36(fvec3) Load 43(inF2)
+             427:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 424 425 426
+             428:   36(fvec3) Load 41(inF0)
+             429:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 428
+             430:   36(fvec3) Load 41(inF0)
+             431:   36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 430
+             434:  411(ivec3) BitCount 433
+             435:   36(fvec3) Load 41(inF0)
+             436:   36(fvec3) Load 42(inF1)
+             437:   36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 435 436
+             438:   36(fvec3) Load 41(inF0)
+             439:   36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 438
+             440:   36(fvec3) Load 41(inF0)
+             441:   36(fvec3) Load 42(inF1)
+             442:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 440 441
+             443:   36(fvec3) Load 41(inF0)
+             444:   36(fvec3) Load 42(inF1)
+             445:    6(float) Dot 443 444
+             446:   36(fvec3) Load 41(inF0)
+             447:   36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 446
+             448:   36(fvec3) Load 41(inF0)
+             449:   36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 448
+             450:   36(fvec3) Load 41(inF0)
+             451:   36(fvec3) Load 42(inF1)
+             452:   36(fvec3) Load 43(inF2)
+             453:   36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 450 451 452
+             454:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
+             455:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
+             456:   36(fvec3) Load 41(inF0)
+             457:   36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 456
+             458:   36(fvec3) Load 41(inF0)
+             459:   36(fvec3) Load 42(inF1)
+             460:   36(fvec3) FMod 458 459
+             461:   36(fvec3) Load 41(inF0)
+             462:   36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 461
+             463:   36(fvec3) Load 41(inF0)
+             465:464(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 463
+             466:  411(ivec3) CompositeExtract 465 1
+                              Store 42(inF1) 466
+             467:   36(fvec3) CompositeExtract 465 0
+             468:   36(fvec3) Load 41(inF0)
+             470:  469(bvec3) IsInf 468
+             471:   36(fvec3) Load 41(inF0)
+             472:  469(bvec3) IsNan 471
+             473:   36(fvec3) Load 41(inF0)
+             474:   36(fvec3) Load 42(inF1)
+             475:   36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 473 474
+             476:   36(fvec3) Load 41(inF0)
+             477:   36(fvec3) Load 42(inF1)
+             478:   36(fvec3) Load 43(inF2)
+             479:   36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 476 477 478
+             480:   36(fvec3) Load 41(inF0)
+             481:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 480
+             482:   36(fvec3) Load 41(inF0)
+             483:   36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 482
+             484:   36(fvec3) Load 41(inF0)
+             485:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 484
+             486:   36(fvec3) VectorTimesScalar 485 201
+             487:   36(fvec3) Load 41(inF0)
+             488:   36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 487
+             489:   36(fvec3) Load 41(inF0)
+             490:   36(fvec3) Load 42(inF1)
+             491:   36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 489 490
+             492:   36(fvec3) Load 41(inF0)
+             493:   36(fvec3) Load 42(inF1)
+             494:   36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 492 493
+             495:   36(fvec3) Load 41(inF0)
+             496:   36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 495
+             497:   36(fvec3) Load 41(inF0)
+             498:   36(fvec3) Load 42(inF1)
+             499:   36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 497 498
+             500:   36(fvec3) Load 41(inF0)
+             501:   36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 500
+             502:   36(fvec3) Load 41(inF0)
+             503:   36(fvec3) Load 42(inF1)
+             504:   36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 502 503
+             505:   36(fvec3) Load 41(inF0)
+             506:   36(fvec3) Load 42(inF1)
+             507:   36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 505 506 359
+             509:  411(ivec3) BitReverse 508
+             510:   36(fvec3) Load 41(inF0)
+             511:   36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 510
+             512:   36(fvec3) Load 41(inF0)
+             513:   36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 512
+             514:   36(fvec3) Load 41(inF0)
+             515:   36(fvec3) CompositeConstruct 223 223 223
              516:   36(fvec3) CompositeConstruct 224 224 224
-             517:   36(fvec3) CompositeConstruct 225 225 225
-             518:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 515 516 517
-             519:   36(fvec3) Load 41(inF0)
-             520:   36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 519
-             521:   36(fvec3) Load 41(inF0)
-             522:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 521
-             523:   36(fvec3) Load 41(inF0)
-             524:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 523
-                              Store 42(inF1) 524
-             525:   36(fvec3) Load 41(inF0)
-             526:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 525
-                              Store 43(inF2) 526
-             527:   36(fvec3) Load 41(inF0)
-             528:   36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 527
-             529:   36(fvec3) Load 41(inF0)
-             530:   36(fvec3) Load 42(inF1)
-             531:   36(fvec3) Load 43(inF2)
-             532:   36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 529 530 531
-             533:   36(fvec3) Load 41(inF0)
-             534:   36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 533
-             535:   36(fvec3) Load 41(inF0)
-             536:   36(fvec3) Load 42(inF1)
-             537:   36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 535 536
-             538:   36(fvec3) Load 41(inF0)
-             539:   36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 538
-             540:   36(fvec3) Load 41(inF0)
-             541:   36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 540
-             542:   36(fvec3) Load 41(inF0)
-             543:   36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 542
-                              ReturnValue 545
+             517:   36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 514 515 516
+             518:   36(fvec3) Load 41(inF0)
+             519:   36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 518
+             520:   36(fvec3) Load 41(inF0)
+             521:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 520
+             522:   36(fvec3) Load 41(inF0)
+             523:   36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 522
+                              Store 42(inF1) 523
+             524:   36(fvec3) Load 41(inF0)
+             525:   36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 524
+                              Store 43(inF2) 525
+             526:   36(fvec3) Load 41(inF0)
+             527:   36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 526
+             528:   36(fvec3) Load 41(inF0)
+             529:   36(fvec3) Load 42(inF1)
+             530:   36(fvec3) Load 43(inF2)
+             531:   36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 528 529 530
+             532:   36(fvec3) Load 41(inF0)
+             533:   36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 532
+             534:   36(fvec3) Load 41(inF0)
+             535:   36(fvec3) Load 42(inF1)
+             536:   36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 534 535
+             537:   36(fvec3) Load 41(inF0)
+             538:   36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 537
+             539:   36(fvec3) Load 41(inF0)
+             540:   36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 539
+             541:   36(fvec3) Load 41(inF0)
+             542:   36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 541
+                              ReturnValue 544
                               FunctionEnd
 58(VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4;):   48(fvec4) Function None 52
         53(inF0):     49(ptr) FunctionParameter
@@ -3445,529 +3447,529 @@ Shader version: 450
         56(inU0):     51(ptr) FunctionParameter
         57(inU1):     51(ptr) FunctionParameter
               59:             Label
-             548:   48(fvec4) Load 53(inF0)
-             549:   132(bool) All 548
-             550:   48(fvec4) Load 53(inF0)
-             551:   48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 550
-             552:   48(fvec4) Load 53(inF0)
-             553:   48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 552
-             554:   48(fvec4) Load 53(inF0)
-             555:   132(bool) Any 554
-             556:   48(fvec4) Load 53(inF0)
-             557:   48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 556
-             558:   48(fvec4) Load 53(inF0)
-             560:  559(ivec4) Bitcast 558
-             561:   48(fvec4) Load 53(inF0)
-             562:   50(ivec4) Bitcast 561
-             563:   50(ivec4) Load 56(inU0)
-             564:   48(fvec4) Bitcast 563
-             565:   48(fvec4) Load 53(inF0)
-             566:   48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 565
-             567:   48(fvec4) Load 53(inF0)
-             568:   48(fvec4) Load 54(inF1)
-             569:   48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 567 568
-             570:   48(fvec4) Load 53(inF0)
-             571:   48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 570
-             572:   48(fvec4) Load 53(inF0)
-             573:   48(fvec4) Load 54(inF1)
-             574:   48(fvec4) Load 55(inF2)
-             575:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 572 573 574
-             576:   48(fvec4) Load 53(inF0)
-             577:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 576
-             578:   48(fvec4) Load 53(inF0)
-             579:   48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 578
-             581:   50(ivec4) BitCount 580
-             582:   48(fvec4) Load 53(inF0)
-             583:   48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 582
-             584:   48(fvec4) Load 53(inF0)
-             585:   48(fvec4) Load 54(inF1)
-             586:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 584 585
-             587:   48(fvec4) Load 53(inF0)
-             588:   48(fvec4) Load 54(inF1)
-             589:    6(float) Dot 587 588
-             590:      7(ptr) AccessChain 53(inF0) 362
+             547:   48(fvec4) Load 53(inF0)
+             548:   132(bool) All 547
+             549:   48(fvec4) Load 53(inF0)
+             550:   48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 549
+             551:   48(fvec4) Load 53(inF0)
+             552:   48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 551
+             553:   48(fvec4) Load 53(inF0)
+             554:   132(bool) Any 553
+             555:   48(fvec4) Load 53(inF0)
+             556:   48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 555
+             557:   48(fvec4) Load 53(inF0)
+             559:  558(ivec4) Bitcast 557
+             560:   48(fvec4) Load 53(inF0)
+             561:   50(ivec4) Bitcast 560
+             562:   50(ivec4) Load 56(inU0)
+             563:   48(fvec4) Bitcast 562
+             564:   48(fvec4) Load 53(inF0)
+             565:   48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 564
+             566:   48(fvec4) Load 53(inF0)
+             567:   48(fvec4) Load 54(inF1)
+             568:   48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 566 567
+             569:   48(fvec4) Load 53(inF0)
+             570:   48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 569
+             571:   48(fvec4) Load 53(inF0)
+             572:   48(fvec4) Load 54(inF1)
+             573:   48(fvec4) Load 55(inF2)
+             574:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 571 572 573
+             575:   48(fvec4) Load 53(inF0)
+             576:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 575
+             577:   48(fvec4) Load 53(inF0)
+             578:   48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 577
+             580:  558(ivec4) BitCount 579
+             581:   48(fvec4) Load 53(inF0)
+             582:   48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 581
+             583:   48(fvec4) Load 53(inF0)
+             584:   48(fvec4) Load 54(inF1)
+             585:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 583 584
+             586:   48(fvec4) Load 53(inF0)
+             587:   48(fvec4) Load 54(inF1)
+             588:    6(float) Dot 586 587
+             590:      7(ptr) AccessChain 53(inF0) 589
              591:    6(float) Load 590
-             592:      7(ptr) AccessChain 54(inF1) 362
+             592:      7(ptr) AccessChain 54(inF1) 589
              593:    6(float) Load 592
              594:    6(float) FMul 591 593
-             595:      7(ptr) AccessChain 53(inF0) 217
-             596:    6(float) Load 595
-             597:      7(ptr) AccessChain 54(inF1) 288
-             598:    6(float) Load 597
-             599:   48(fvec4) CompositeConstruct 225 594 596 598
-             600:   48(fvec4) Load 53(inF0)
-             601:   48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 600
+             596:      7(ptr) AccessChain 53(inF0) 595
+             597:    6(float) Load 596
+             599:      7(ptr) AccessChain 54(inF1) 598
+             600:    6(float) Load 599
+             601:   48(fvec4) CompositeConstruct 224 594 597 600
              602:   48(fvec4) Load 53(inF0)
-             603:   48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 602
+             603:   48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 602
              604:   48(fvec4) Load 53(inF0)
-             605:   48(fvec4) Load 54(inF1)
-             606:   48(fvec4) Load 55(inF2)
-             607:   48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 604 605 606
-             608:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172
-             609:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172
-             610:   48(fvec4) Load 53(inF0)
-             611:   48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 610
+             605:   48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 604
+             606:   48(fvec4) Load 53(inF0)
+             607:   48(fvec4) Load 54(inF1)
+             608:   48(fvec4) Load 55(inF2)
+             609:   48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 606 607 608
+             610:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
+             611:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
              612:   48(fvec4) Load 53(inF0)
-             613:   48(fvec4) Load 54(inF1)
-             614:   48(fvec4) FMod 612 613
-             615:   48(fvec4) Load 53(inF0)
-             616:   48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 615
+             613:   48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 612
+             614:   48(fvec4) Load 53(inF0)
+             615:   48(fvec4) Load 54(inF1)
+             616:   48(fvec4) FMod 614 615
              617:   48(fvec4) Load 53(inF0)
-             619:618(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 617
-             620:  559(ivec4) CompositeExtract 619 1
-                              Store 54(inF1) 620
-             621:   48(fvec4) CompositeExtract 619 0
-             622:   48(fvec4) Load 53(inF0)
-             624:  623(bvec4) IsInf 622
-             625:   48(fvec4) Load 53(inF0)
-             626:  623(bvec4) IsNan 625
+             618:   48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 617
+             619:   48(fvec4) Load 53(inF0)
+             621:620(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 619
+             622:  558(ivec4) CompositeExtract 621 1
+                              Store 54(inF1) 622
+             623:   48(fvec4) CompositeExtract 621 0
+             624:   48(fvec4) Load 53(inF0)
+             626:  625(bvec4) IsInf 624
              627:   48(fvec4) Load 53(inF0)
-             628:   48(fvec4) Load 54(inF1)
-             629:   48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 627 628
-             630:   48(fvec4) Load 53(inF0)
-             631:   48(fvec4) Load 54(inF1)
-             632:   48(fvec4) Load 55(inF2)
-             633:   48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 630 631 632
-             634:   48(fvec4) Load 53(inF0)
-             635:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 634
+             628:  625(bvec4) IsNan 627
+             629:   48(fvec4) Load 53(inF0)
+             630:   48(fvec4) Load 54(inF1)
+             631:   48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 629 630
+             632:   48(fvec4) Load 53(inF0)
+             633:   48(fvec4) Load 54(inF1)
+             634:   48(fvec4) Load 55(inF2)
+             635:   48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 632 633 634
              636:   48(fvec4) Load 53(inF0)
-             637:   48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 636
+             637:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 636
              638:   48(fvec4) Load 53(inF0)
-             639:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 638
-             640:   48(fvec4) VectorTimesScalar 639 202
-             641:   48(fvec4) Load 53(inF0)
-             642:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 641
+             639:   48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 638
+             640:   48(fvec4) Load 53(inF0)
+             641:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 640
+             642:   48(fvec4) VectorTimesScalar 641 201
              643:   48(fvec4) Load 53(inF0)
-             644:   48(fvec4) Load 54(inF1)
-             645:   48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 643 644
-             646:   48(fvec4) Load 53(inF0)
-             647:   48(fvec4) Load 54(inF1)
-             648:   48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 646 647
-             649:   48(fvec4) Load 53(inF0)
-             650:   48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 649
+             644:   48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 643
+             645:   48(fvec4) Load 53(inF0)
+             646:   48(fvec4) Load 54(inF1)
+             647:   48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 645 646
+             648:   48(fvec4) Load 53(inF0)
+             649:   48(fvec4) Load 54(inF1)
+             650:   48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 648 649
              651:   48(fvec4) Load 53(inF0)
-             652:   48(fvec4) Load 54(inF1)
-             653:   48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 651 652
-             654:   48(fvec4) Load 53(inF0)
-             655:   48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 654
+             652:   48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 651
+             653:   48(fvec4) Load 53(inF0)
+             654:   48(fvec4) Load 54(inF1)
+             655:   48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 653 654
              656:   48(fvec4) Load 53(inF0)
-             657:   48(fvec4) Load 54(inF1)
-             658:   48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 656 657
-             659:   48(fvec4) Load 53(inF0)
-             660:   48(fvec4) Load 54(inF1)
-             661:   48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 659 660 360
-             664:   50(ivec4) BitReverse 663
-             665:   48(fvec4) Load 53(inF0)
-             666:   48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 665
+             657:   48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 656
+             658:   48(fvec4) Load 53(inF0)
+             659:   48(fvec4) Load 54(inF1)
+             660:   48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 658 659
+             661:   48(fvec4) Load 53(inF0)
+             662:   48(fvec4) Load 54(inF1)
+             663:   48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 661 662 359
+             666:  558(ivec4) BitReverse 665
              667:   48(fvec4) Load 53(inF0)
-             668:   48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 667
+             668:   48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 667
              669:   48(fvec4) Load 53(inF0)
-             670:   48(fvec4) CompositeConstruct 224 224 224 224
-             671:   48(fvec4) CompositeConstruct 225 225 225 225
-             672:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 669 670 671
-             673:   48(fvec4) Load 53(inF0)
-             674:   48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 673
+             670:   48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 669
+             671:   48(fvec4) Load 53(inF0)
+             672:   48(fvec4) CompositeConstruct 223 223 223 223
+             673:   48(fvec4) CompositeConstruct 224 224 224 224
+             674:   48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 671 672 673
              675:   48(fvec4) Load 53(inF0)
-             676:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 675
+             676:   48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 675
              677:   48(fvec4) Load 53(inF0)
              678:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 677
-                              Store 54(inF1) 678
              679:   48(fvec4) Load 53(inF0)
-             680:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 679
-                              Store 55(inF2) 680
+             680:   48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 679
+                              Store 54(inF1) 680
              681:   48(fvec4) Load 53(inF0)
-             682:   48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 681
+             682:   48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 681
+                              Store 55(inF2) 682
              683:   48(fvec4) Load 53(inF0)
-             684:   48(fvec4) Load 54(inF1)
-             685:   48(fvec4) Load 55(inF2)
-             686:   48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 683 684 685
-             687:   48(fvec4) Load 53(inF0)
-             688:   48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 687
+             684:   48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 683
+             685:   48(fvec4) Load 53(inF0)
+             686:   48(fvec4) Load 54(inF1)
+             687:   48(fvec4) Load 55(inF2)
+             688:   48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 685 686 687
              689:   48(fvec4) Load 53(inF0)
-             690:   48(fvec4) Load 54(inF1)
-             691:   48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 689 690
-             692:   48(fvec4) Load 53(inF0)
-             693:   48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 692
+             690:   48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 689
+             691:   48(fvec4) Load 53(inF0)
+             692:   48(fvec4) Load 54(inF1)
+             693:   48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 691 692
              694:   48(fvec4) Load 53(inF0)
-             695:   48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 694
+             695:   48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 694
              696:   48(fvec4) Load 53(inF0)
-             697:   48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 696
-                              ReturnValue 699
+             697:   48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 696
+             698:   48(fvec4) Load 53(inF0)
+             699:   48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 698
+                              ReturnValue 701
                               FunctionEnd
 66(VertexShaderFunction2x2(mf22;mf22;mf22;):          60 Function None 62
         63(inF0):     61(ptr) FunctionParameter
         64(inF1):     61(ptr) FunctionParameter
         65(inF2):     61(ptr) FunctionParameter
               67:             Label
-             702:          60 Load 63(inF0)
-             703:   132(bool) All 702
              704:          60 Load 63(inF0)
-             705:          60 ExtInst 1(GLSL.std.450) 4(FAbs) 704
+             705:   132(bool) All 704
              706:          60 Load 63(inF0)
-             707:          60 ExtInst 1(GLSL.std.450) 17(Acos) 706
+             707:          60 ExtInst 1(GLSL.std.450) 4(FAbs) 706
              708:          60 Load 63(inF0)
-             709:   132(bool) Any 708
+             709:          60 ExtInst 1(GLSL.std.450) 17(Acos) 708
              710:          60 Load 63(inF0)
-             711:          60 ExtInst 1(GLSL.std.450) 16(Asin) 710
+             711:   132(bool) Any 710
              712:          60 Load 63(inF0)
-             713:          60 ExtInst 1(GLSL.std.450) 18(Atan) 712
+             713:          60 ExtInst 1(GLSL.std.450) 16(Asin) 712
              714:          60 Load 63(inF0)
-             715:          60 Load 64(inF1)
-             716:          60 ExtInst 1(GLSL.std.450) 25(Atan2) 714 715
-             717:          60 Load 63(inF0)
-             718:          60 ExtInst 1(GLSL.std.450) 9(Ceil) 717
+             715:          60 ExtInst 1(GLSL.std.450) 18(Atan) 714
+             716:          60 Load 63(inF0)
+             717:          60 Load 64(inF1)
+             718:          60 ExtInst 1(GLSL.std.450) 25(Atan2) 716 717
              719:          60 Load 63(inF0)
-             720:          60 Load 64(inF1)
-             721:          60 Load 65(inF2)
-             722:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 719 720 721
-             723:          60 Load 63(inF0)
-             724:          60 ExtInst 1(GLSL.std.450) 14(Cos) 723
+             720:          60 ExtInst 1(GLSL.std.450) 9(Ceil) 719
+             721:          60 Load 63(inF0)
+             722:          60 Load 64(inF1)
+             723:          60 Load 65(inF2)
+             724:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 721 722 723
              725:          60 Load 63(inF0)
-             726:          60 ExtInst 1(GLSL.std.450) 20(Cosh) 725
+             726:          60 ExtInst 1(GLSL.std.450) 14(Cos) 725
              727:          60 Load 63(inF0)
-             728:          60 ExtInst 1(GLSL.std.450) 12(Degrees) 727
+             728:          60 ExtInst 1(GLSL.std.450) 20(Cosh) 727
              729:          60 Load 63(inF0)
-             730:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 729
+             730:          60 ExtInst 1(GLSL.std.450) 12(Degrees) 729
              731:          60 Load 63(inF0)
-             732:          60 ExtInst 1(GLSL.std.450) 27(Exp) 731
+             732:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 731
              733:          60 Load 63(inF0)
-             734:          60 ExtInst 1(GLSL.std.450) 29(Exp2) 733
-             735:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172
-             736:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172
-             737:          60 Load 63(inF0)
-             738:          60 ExtInst 1(GLSL.std.450) 8(Floor) 737
+             734:          60 ExtInst 1(GLSL.std.450) 27(Exp) 733
+             735:          60 Load 63(inF0)
+             736:          60 ExtInst 1(GLSL.std.450) 29(Exp2) 735
+             737:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
+             738:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
              739:          60 Load 63(inF0)
-             740:          60 Load 64(inF1)
-             741:   24(fvec2) CompositeExtract 739 0
-             742:   24(fvec2) CompositeExtract 740 0
-             743:   24(fvec2) FMod 741 742
-             744:   24(fvec2) CompositeExtract 739 1
-             745:   24(fvec2) CompositeExtract 740 1
-             746:   24(fvec2) FMod 744 745
-             747:          60 CompositeConstruct 743 746
-             748:          60 Load 63(inF0)
-             749:          60 ExtInst 1(GLSL.std.450) 10(Fract) 748
+             740:          60 ExtInst 1(GLSL.std.450) 8(Floor) 739
+             741:          60 Load 63(inF0)
+             742:          60 Load 64(inF1)
+             743:   24(fvec2) CompositeExtract 741 0
+             744:   24(fvec2) CompositeExtract 742 0
+             745:   24(fvec2) FMod 743 744
+             746:   24(fvec2) CompositeExtract 741 1
+             747:   24(fvec2) CompositeExtract 742 1
+             748:   24(fvec2) FMod 746 747
+             749:          60 CompositeConstruct 745 748
              750:          60 Load 63(inF0)
-             752:751(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 750
-             753:  267(ivec2) CompositeExtract 752 1
-                              Store 64(inF1) 753
-             754:          60 CompositeExtract 752 0
-             755:          60 Load 63(inF0)
-             756:          60 Load 64(inF1)
-             757:          60 ExtInst 1(GLSL.std.450) 53(Ldexp) 755 756
-             758:          60 Load 63(inF0)
-             759:          60 Load 64(inF1)
-             760:          60 Load 65(inF2)
-             761:          60 ExtInst 1(GLSL.std.450) 46(FMix) 758 759 760
-             762:          60 Load 63(inF0)
-             763:          60 ExtInst 1(GLSL.std.450) 28(Log) 762
+             751:          60 ExtInst 1(GLSL.std.450) 10(Fract) 750
+             752:          60 Load 63(inF0)
+             754:753(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 752
+             755:  266(ivec2) CompositeExtract 754 1
+                              Store 64(inF1) 755
+             756:          60 CompositeExtract 754 0
+             757:          60 Load 63(inF0)
+             758:          60 Load 64(inF1)
+             759:          60 ExtInst 1(GLSL.std.450) 53(Ldexp) 757 758
+             760:          60 Load 63(inF0)
+             761:          60 Load 64(inF1)
+             762:          60 Load 65(inF2)
+             763:          60 ExtInst 1(GLSL.std.450) 46(FMix) 760 761 762
              764:          60 Load 63(inF0)
-             765:          60 ExtInst 1(GLSL.std.450) 30(Log2) 764
-             766:          60 MatrixTimesScalar 765 202
-             767:          60 Load 63(inF0)
-             768:          60 ExtInst 1(GLSL.std.450) 30(Log2) 767
+             765:          60 ExtInst 1(GLSL.std.450) 28(Log) 764
+             766:          60 Load 63(inF0)
+             767:          60 ExtInst 1(GLSL.std.450) 30(Log2) 766
+             768:          60 MatrixTimesScalar 767 201
              769:          60 Load 63(inF0)
-             770:          60 Load 64(inF1)
-             771:          60 ExtInst 1(GLSL.std.450) 40(FMax) 769 770
-             772:          60 Load 63(inF0)
-             773:          60 Load 64(inF1)
-             774:          60 ExtInst 1(GLSL.std.450) 37(FMin) 772 773
-             775:          60 Load 63(inF0)
-             776:          60 Load 64(inF1)
-             777:          60 ExtInst 1(GLSL.std.450) 26(Pow) 775 776
-             778:          60 Load 63(inF0)
-             779:          60 ExtInst 1(GLSL.std.450) 11(Radians) 778
+             770:          60 ExtInst 1(GLSL.std.450) 30(Log2) 769
+             771:          60 Load 63(inF0)
+             772:          60 Load 64(inF1)
+             773:          60 ExtInst 1(GLSL.std.450) 40(FMax) 771 772
+             774:          60 Load 63(inF0)
+             775:          60 Load 64(inF1)
+             776:          60 ExtInst 1(GLSL.std.450) 37(FMin) 774 775
+             777:          60 Load 63(inF0)
+             778:          60 Load 64(inF1)
+             779:          60 ExtInst 1(GLSL.std.450) 26(Pow) 777 778
              780:          60 Load 63(inF0)
-             781:          60 ExtInst 1(GLSL.std.450) 2(RoundEven) 780
+             781:          60 ExtInst 1(GLSL.std.450) 11(Radians) 780
              782:          60 Load 63(inF0)
-             783:          60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 782
+             783:          60 ExtInst 1(GLSL.std.450) 2(RoundEven) 782
              784:          60 Load 63(inF0)
-             785:   24(fvec2) CompositeConstruct 224 224
-             786:   24(fvec2) CompositeConstruct 225 225
-             787:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 784 785 786
-             788:          60 Load 63(inF0)
-             789:          60 ExtInst 1(GLSL.std.450) 6(FSign) 788
+             785:          60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 784
+             786:          60 Load 63(inF0)
+             787:   24(fvec2) CompositeConstruct 223 223
+             788:   24(fvec2) CompositeConstruct 224 224
+             789:          60 ExtInst 1(GLSL.std.450) 43(FClamp) 786 787 788
              790:          60 Load 63(inF0)
-             791:          60 ExtInst 1(GLSL.std.450) 13(Sin) 790
+             791:          60 ExtInst 1(GLSL.std.450) 6(FSign) 790
              792:          60 Load 63(inF0)
              793:          60 ExtInst 1(GLSL.std.450) 13(Sin) 792
-                              Store 64(inF1) 793
              794:          60 Load 63(inF0)
-             795:          60 ExtInst 1(GLSL.std.450) 14(Cos) 794
-                              Store 65(inF2) 795
+             795:          60 ExtInst 1(GLSL.std.450) 13(Sin) 794
+                              Store 64(inF1) 795
              796:          60 Load 63(inF0)
-             797:          60 ExtInst 1(GLSL.std.450) 19(Sinh) 796
+             797:          60 ExtInst 1(GLSL.std.450) 14(Cos) 796
+                              Store 65(inF2) 797
              798:          60 Load 63(inF0)
-             799:          60 Load 64(inF1)
-             800:          60 Load 65(inF2)
-             801:          60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 798 799 800
-             802:          60 Load 63(inF0)
-             803:          60 ExtInst 1(GLSL.std.450) 31(Sqrt) 802
+             799:          60 ExtInst 1(GLSL.std.450) 19(Sinh) 798
+             800:          60 Load 63(inF0)
+             801:          60 Load 64(inF1)
+             802:          60 Load 65(inF2)
+             803:          60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 800 801 802
              804:          60 Load 63(inF0)
-             805:          60 Load 64(inF1)
-             806:          60 ExtInst 1(GLSL.std.450) 48(Step) 804 805
-             807:          60 Load 63(inF0)
-             808:          60 ExtInst 1(GLSL.std.450) 15(Tan) 807
+             805:          60 ExtInst 1(GLSL.std.450) 31(Sqrt) 804
+             806:          60 Load 63(inF0)
+             807:          60 Load 64(inF1)
+             808:          60 ExtInst 1(GLSL.std.450) 48(Step) 806 807
              809:          60 Load 63(inF0)
-             810:          60 ExtInst 1(GLSL.std.450) 21(Tanh) 809
+             810:          60 ExtInst 1(GLSL.std.450) 15(Tan) 809
              811:          60 Load 63(inF0)
-             812:          60 Transpose 811
+             812:          60 ExtInst 1(GLSL.std.450) 21(Tanh) 811
              813:          60 Load 63(inF0)
-             814:          60 ExtInst 1(GLSL.std.450) 3(Trunc) 813
-                              ReturnValue 816
+             814:          60 Transpose 813
+             815:          60 Load 63(inF0)
+             816:          60 ExtInst 1(GLSL.std.450) 3(Trunc) 815
+                              ReturnValue 818
                               FunctionEnd
 74(VertexShaderFunction3x3(mf33;mf33;mf33;):          68 Function None 70
         71(inF0):     69(ptr) FunctionParameter
         72(inF1):     69(ptr) FunctionParameter
         73(inF2):     69(ptr) FunctionParameter
               75:             Label
-             819:          68 Load 71(inF0)
-             820:   132(bool) All 819
              821:          68 Load 71(inF0)
-             822:          68 ExtInst 1(GLSL.std.450) 4(FAbs) 821
+             822:   132(bool) All 821
              823:          68 Load 71(inF0)
-             824:          68 ExtInst 1(GLSL.std.450) 17(Acos) 823
+             824:          68 ExtInst 1(GLSL.std.450) 4(FAbs) 823
              825:          68 Load 71(inF0)
-             826:   132(bool) Any 825
+             826:          68 ExtInst 1(GLSL.std.450) 17(Acos) 825
              827:          68 Load 71(inF0)
-             828:          68 ExtInst 1(GLSL.std.450) 16(Asin) 827
+             828:   132(bool) Any 827
              829:          68 Load 71(inF0)
-             830:          68 ExtInst 1(GLSL.std.450) 18(Atan) 829
+             830:          68 ExtInst 1(GLSL.std.450) 16(Asin) 829
              831:          68 Load 71(inF0)
-             832:          68 Load 72(inF1)
-             833:          68 ExtInst 1(GLSL.std.450) 25(Atan2) 831 832
-             834:          68 Load 71(inF0)
-             835:          68 ExtInst 1(GLSL.std.450) 9(Ceil) 834
+             832:          68 ExtInst 1(GLSL.std.450) 18(Atan) 831
+             833:          68 Load 71(inF0)
+             834:          68 Load 72(inF1)
+             835:          68 ExtInst 1(GLSL.std.450) 25(Atan2) 833 834
              836:          68 Load 71(inF0)
-             837:          68 Load 72(inF1)
-             838:          68 Load 73(inF2)
-             839:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 836 837 838
-             840:          68 Load 71(inF0)
-             841:          68 ExtInst 1(GLSL.std.450) 14(Cos) 840
+             837:          68 ExtInst 1(GLSL.std.450) 9(Ceil) 836
+             838:          68 Load 71(inF0)
+             839:          68 Load 72(inF1)
+             840:          68 Load 73(inF2)
+             841:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 838 839 840
              842:          68 Load 71(inF0)
-             843:          68 ExtInst 1(GLSL.std.450) 20(Cosh) 842
+             843:          68 ExtInst 1(GLSL.std.450) 14(Cos) 842
              844:          68 Load 71(inF0)
-             845:          68 ExtInst 1(GLSL.std.450) 12(Degrees) 844
+             845:          68 ExtInst 1(GLSL.std.450) 20(Cosh) 844
              846:          68 Load 71(inF0)
-             847:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 846
+             847:          68 ExtInst 1(GLSL.std.450) 12(Degrees) 846
              848:          68 Load 71(inF0)
-             849:          68 ExtInst 1(GLSL.std.450) 27(Exp) 848
+             849:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 848
              850:          68 Load 71(inF0)
-             851:          68 ExtInst 1(GLSL.std.450) 29(Exp2) 850
-             852:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172
-             853:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172
-             854:          68 Load 71(inF0)
-             855:          68 ExtInst 1(GLSL.std.450) 8(Floor) 854
+             851:          68 ExtInst 1(GLSL.std.450) 27(Exp) 850
+             852:          68 Load 71(inF0)
+             853:          68 ExtInst 1(GLSL.std.450) 29(Exp2) 852
+             854:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
+             855:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
              856:          68 Load 71(inF0)
-             857:          68 Load 72(inF1)
-             858:   36(fvec3) CompositeExtract 856 0
-             859:   36(fvec3) CompositeExtract 857 0
-             860:   36(fvec3) FMod 858 859
-             861:   36(fvec3) CompositeExtract 856 1
-             862:   36(fvec3) CompositeExtract 857 1
-             863:   36(fvec3) FMod 861 862
-             864:   36(fvec3) CompositeExtract 856 2
-             865:   36(fvec3) CompositeExtract 857 2
-             866:   36(fvec3) FMod 864 865
-             867:          68 CompositeConstruct 860 863 866
-             868:          68 Load 71(inF0)
-             869:          68 ExtInst 1(GLSL.std.450) 10(Fract) 868
+             857:          68 ExtInst 1(GLSL.std.450) 8(Floor) 856
+             858:          68 Load 71(inF0)
+             859:          68 Load 72(inF1)
+             860:   36(fvec3) CompositeExtract 858 0
+             861:   36(fvec3) CompositeExtract 859 0
+             862:   36(fvec3) FMod 860 861
+             863:   36(fvec3) CompositeExtract 858 1
+             864:   36(fvec3) CompositeExtract 859 1
+             865:   36(fvec3) FMod 863 864
+             866:   36(fvec3) CompositeExtract 858 2
+             867:   36(fvec3) CompositeExtract 859 2
+             868:   36(fvec3) FMod 866 867
+             869:          68 CompositeConstruct 862 865 868
              870:          68 Load 71(inF0)
-             872:871(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 870
-             873:  412(ivec3) CompositeExtract 872 1
-                              Store 72(inF1) 873
-             874:          68 CompositeExtract 872 0
-             875:          68 Load 71(inF0)
-             876:          68 Load 72(inF1)
-             877:          68 ExtInst 1(GLSL.std.450) 53(Ldexp) 875 876
-             878:          68 Load 71(inF0)
-             879:          68 Load 72(inF1)
-             880:          68 Load 73(inF2)
-             881:          68 ExtInst 1(GLSL.std.450) 46(FMix) 878 879 880
-             882:          68 Load 71(inF0)
-             883:          68 ExtInst 1(GLSL.std.450) 28(Log) 882
+             871:          68 ExtInst 1(GLSL.std.450) 10(Fract) 870
+             872:          68 Load 71(inF0)
+             874:873(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 872
+             875:  411(ivec3) CompositeExtract 874 1
+                              Store 72(inF1) 875
+             876:          68 CompositeExtract 874 0
+             877:          68 Load 71(inF0)
+             878:          68 Load 72(inF1)
+             879:          68 ExtInst 1(GLSL.std.450) 53(Ldexp) 877 878
+             880:          68 Load 71(inF0)
+             881:          68 Load 72(inF1)
+             882:          68 Load 73(inF2)
+             883:          68 ExtInst 1(GLSL.std.450) 46(FMix) 880 881 882
              884:          68 Load 71(inF0)
-             885:          68 ExtInst 1(GLSL.std.450) 30(Log2) 884
-             886:          68 MatrixTimesScalar 885 202
-             887:          68 Load 71(inF0)
-             888:          68 ExtInst 1(GLSL.std.450) 30(Log2) 887
+             885:          68 ExtInst 1(GLSL.std.450) 28(Log) 884
+             886:          68 Load 71(inF0)
+             887:          68 ExtInst 1(GLSL.std.450) 30(Log2) 886
+             888:          68 MatrixTimesScalar 887 201
              889:          68 Load 71(inF0)
-             890:          68 Load 72(inF1)
-             891:          68 ExtInst 1(GLSL.std.450) 40(FMax) 889 890
-             892:          68 Load 71(inF0)
-             893:          68 Load 72(inF1)
-             894:          68 ExtInst 1(GLSL.std.450) 37(FMin) 892 893
-             895:          68 Load 71(inF0)
-             896:          68 Load 72(inF1)
-             897:          68 ExtInst 1(GLSL.std.450) 26(Pow) 895 896
-             898:          68 Load 71(inF0)
-             899:          68 ExtInst 1(GLSL.std.450) 11(Radians) 898
+             890:          68 ExtInst 1(GLSL.std.450) 30(Log2) 889
+             891:          68 Load 71(inF0)
+             892:          68 Load 72(inF1)
+             893:          68 ExtInst 1(GLSL.std.450) 40(FMax) 891 892
+             894:          68 Load 71(inF0)
+             895:          68 Load 72(inF1)
+             896:          68 ExtInst 1(GLSL.std.450) 37(FMin) 894 895
+             897:          68 Load 71(inF0)
+             898:          68 Load 72(inF1)
+             899:          68 ExtInst 1(GLSL.std.450) 26(Pow) 897 898
              900:          68 Load 71(inF0)
-             901:          68 ExtInst 1(GLSL.std.450) 2(RoundEven) 900
+             901:          68 ExtInst 1(GLSL.std.450) 11(Radians) 900
              902:          68 Load 71(inF0)
-             903:          68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 902
+             903:          68 ExtInst 1(GLSL.std.450) 2(RoundEven) 902
              904:          68 Load 71(inF0)
-             905:   36(fvec3) CompositeConstruct 224 224 224
-             906:   36(fvec3) CompositeConstruct 225 225 225
-             907:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 904 905 906
-             908:          68 Load 71(inF0)
-             909:          68 ExtInst 1(GLSL.std.450) 6(FSign) 908
+             905:          68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 904
+             906:          68 Load 71(inF0)
+             907:   36(fvec3) CompositeConstruct 223 223 223
+             908:   36(fvec3) CompositeConstruct 224 224 224
+             909:          68 ExtInst 1(GLSL.std.450) 43(FClamp) 906 907 908
              910:          68 Load 71(inF0)
-             911:          68 ExtInst 1(GLSL.std.450) 13(Sin) 910
+             911:          68 ExtInst 1(GLSL.std.450) 6(FSign) 910
              912:          68 Load 71(inF0)
              913:          68 ExtInst 1(GLSL.std.450) 13(Sin) 912
-                              Store 72(inF1) 913
              914:          68 Load 71(inF0)
-             915:          68 ExtInst 1(GLSL.std.450) 14(Cos) 914
-                              Store 73(inF2) 915
+             915:          68 ExtInst 1(GLSL.std.450) 13(Sin) 914
+                              Store 72(inF1) 915
              916:          68 Load 71(inF0)
-             917:          68 ExtInst 1(GLSL.std.450) 19(Sinh) 916
+             917:          68 ExtInst 1(GLSL.std.450) 14(Cos) 916
+                              Store 73(inF2) 917
              918:          68 Load 71(inF0)
-             919:          68 Load 72(inF1)
-             920:          68 Load 73(inF2)
-             921:          68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 918 919 920
-             922:          68 Load 71(inF0)
-             923:          68 ExtInst 1(GLSL.std.450) 31(Sqrt) 922
+             919:          68 ExtInst 1(GLSL.std.450) 19(Sinh) 918
+             920:          68 Load 71(inF0)
+             921:          68 Load 72(inF1)
+             922:          68 Load 73(inF2)
+             923:          68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 920 921 922
              924:          68 Load 71(inF0)
-             925:          68 Load 72(inF1)
-             926:          68 ExtInst 1(GLSL.std.450) 48(Step) 924 925
-             927:          68 Load 71(inF0)
-             928:          68 ExtInst 1(GLSL.std.450) 15(Tan) 927
+             925:          68 ExtInst 1(GLSL.std.450) 31(Sqrt) 924
+             926:          68 Load 71(inF0)
+             927:          68 Load 72(inF1)
+             928:          68 ExtInst 1(GLSL.std.450) 48(Step) 926 927
              929:          68 Load 71(inF0)
-             930:          68 ExtInst 1(GLSL.std.450) 21(Tanh) 929
+             930:          68 ExtInst 1(GLSL.std.450) 15(Tan) 929
              931:          68 Load 71(inF0)
-             932:          68 Transpose 931
+             932:          68 ExtInst 1(GLSL.std.450) 21(Tanh) 931
              933:          68 Load 71(inF0)
-             934:          68 ExtInst 1(GLSL.std.450) 3(Trunc) 933
-                              ReturnValue 936
+             934:          68 Transpose 933
+             935:          68 Load 71(inF0)
+             936:          68 ExtInst 1(GLSL.std.450) 3(Trunc) 935
+                              ReturnValue 938
                               FunctionEnd
 82(VertexShaderFunction4x4(mf44;mf44;mf44;):          76 Function None 78
         79(inF0):     77(ptr) FunctionParameter
         80(inF1):     77(ptr) FunctionParameter
         81(inF2):     77(ptr) FunctionParameter
               83:             Label
-             939:          76 Load 79(inF0)
-             940:   132(bool) All 939
              941:          76 Load 79(inF0)
-             942:          76 ExtInst 1(GLSL.std.450) 4(FAbs) 941
+             942:   132(bool) All 941
              943:          76 Load 79(inF0)
-             944:          76 ExtInst 1(GLSL.std.450) 17(Acos) 943
+             944:          76 ExtInst 1(GLSL.std.450) 4(FAbs) 943
              945:          76 Load 79(inF0)
-             946:   132(bool) Any 945
+             946:          76 ExtInst 1(GLSL.std.450) 17(Acos) 945
              947:          76 Load 79(inF0)
-             948:          76 ExtInst 1(GLSL.std.450) 16(Asin) 947
+             948:   132(bool) Any 947
              949:          76 Load 79(inF0)
-             950:          76 ExtInst 1(GLSL.std.450) 18(Atan) 949
+             950:          76 ExtInst 1(GLSL.std.450) 16(Asin) 949
              951:          76 Load 79(inF0)
-             952:          76 Load 80(inF1)
-             953:          76 ExtInst 1(GLSL.std.450) 25(Atan2) 951 952
-             954:          76 Load 79(inF0)
-             955:          76 ExtInst 1(GLSL.std.450) 9(Ceil) 954
+             952:          76 ExtInst 1(GLSL.std.450) 18(Atan) 951
+             953:          76 Load 79(inF0)
+             954:          76 Load 80(inF1)
+             955:          76 ExtInst 1(GLSL.std.450) 25(Atan2) 953 954
              956:          76 Load 79(inF0)
-             957:          76 Load 80(inF1)
-             958:          76 Load 81(inF2)
-             959:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 956 957 958
-             960:          76 Load 79(inF0)
-             961:          76 ExtInst 1(GLSL.std.450) 14(Cos) 960
+             957:          76 ExtInst 1(GLSL.std.450) 9(Ceil) 956
+             958:          76 Load 79(inF0)
+             959:          76 Load 80(inF1)
+             960:          76 Load 81(inF2)
+             961:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 958 959 960
              962:          76 Load 79(inF0)
-             963:          76 ExtInst 1(GLSL.std.450) 20(Cosh) 962
+             963:          76 ExtInst 1(GLSL.std.450) 14(Cos) 962
              964:          76 Load 79(inF0)
-             965:          76 ExtInst 1(GLSL.std.450) 12(Degrees) 964
+             965:          76 ExtInst 1(GLSL.std.450) 20(Cosh) 964
              966:          76 Load 79(inF0)
-             967:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 966
+             967:          76 ExtInst 1(GLSL.std.450) 12(Degrees) 966
              968:          76 Load 79(inF0)
-             969:          76 ExtInst 1(GLSL.std.450) 27(Exp) 968
+             969:    6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 968
              970:          76 Load 79(inF0)
-             971:          76 ExtInst 1(GLSL.std.450) 29(Exp2) 970
-             972:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172
-             973:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172
-             974:          76 Load 79(inF0)
-             975:          76 ExtInst 1(GLSL.std.450) 8(Floor) 974
+             971:          76 ExtInst 1(GLSL.std.450) 27(Exp) 970
+             972:          76 Load 79(inF0)
+             973:          76 ExtInst 1(GLSL.std.450) 29(Exp2) 972
+             974:    143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164
+             975:    143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164
              976:          76 Load 79(inF0)
-             977:          76 Load 80(inF1)
-             978:   48(fvec4) CompositeExtract 976 0
-             979:   48(fvec4) CompositeExtract 977 0
-             980:   48(fvec4) FMod 978 979
-             981:   48(fvec4) CompositeExtract 976 1
-             982:   48(fvec4) CompositeExtract 977 1
-             983:   48(fvec4) FMod 981 982
-             984:   48(fvec4) CompositeExtract 976 2
-             985:   48(fvec4) CompositeExtract 977 2
-             986:   48(fvec4) FMod 984 985
-             987:   48(fvec4) CompositeExtract 976 3
-             988:   48(fvec4) CompositeExtract 977 3
-             989:   48(fvec4) FMod 987 988
-             990:          76 CompositeConstruct 980 983 986 989
-             991:          76 Load 79(inF0)
-             992:          76 ExtInst 1(GLSL.std.450) 10(Fract) 991
+             977:          76 ExtInst 1(GLSL.std.450) 8(Floor) 976
+             978:          76 Load 79(inF0)
+             979:          76 Load 80(inF1)
+             980:   48(fvec4) CompositeExtract 978 0
+             981:   48(fvec4) CompositeExtract 979 0
+             982:   48(fvec4) FMod 980 981
+             983:   48(fvec4) CompositeExtract 978 1
+             984:   48(fvec4) CompositeExtract 979 1
+             985:   48(fvec4) FMod 983 984
+             986:   48(fvec4) CompositeExtract 978 2
+             987:   48(fvec4) CompositeExtract 979 2
+             988:   48(fvec4) FMod 986 987
+             989:   48(fvec4) CompositeExtract 978 3
+             990:   48(fvec4) CompositeExtract 979 3
+             991:   48(fvec4) FMod 989 990
+             992:          76 CompositeConstruct 982 985 988 991
              993:          76 Load 79(inF0)
-             995:994(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 993
-             996:  559(ivec4) CompositeExtract 995 1
-                              Store 80(inF1) 996
-             997:          76 CompositeExtract 995 0
-             998:          76 Load 79(inF0)
-             999:          76 Load 80(inF1)
-            1000:          76 ExtInst 1(GLSL.std.450) 53(Ldexp) 998 999
-            1001:          76 Load 79(inF0)
-            1002:          76 Load 80(inF1)
-            1003:          76 Load 81(inF2)
-            1004:          76 ExtInst 1(GLSL.std.450) 46(FMix) 1001 1002 1003
-            1005:          76 Load 79(inF0)
-            1006:          76 ExtInst 1(GLSL.std.450) 28(Log) 1005
+             994:          76 ExtInst 1(GLSL.std.450) 10(Fract) 993
+             995:          76 Load 79(inF0)
+             997:996(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 995
+             998:  558(ivec4) CompositeExtract 997 1
+                              Store 80(inF1) 998
+             999:          76 CompositeExtract 997 0
+            1000:          76 Load 79(inF0)
+            1001:          76 Load 80(inF1)
+            1002:          76 ExtInst 1(GLSL.std.450) 53(Ldexp) 1000 1001
+            1003:          76 Load 79(inF0)
+            1004:          76 Load 80(inF1)
+            1005:          76 Load 81(inF2)
+            1006:          76 ExtInst 1(GLSL.std.450) 46(FMix) 1003 1004 1005
             1007:          76 Load 79(inF0)
-            1008:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1007
-            1009:          76 MatrixTimesScalar 1008 202
-            1010:          76 Load 79(inF0)
-            1011:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1010
+            1008:          76 ExtInst 1(GLSL.std.450) 28(Log) 1007
+            1009:          76 Load 79(inF0)
+            1010:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1009
+            1011:          76 MatrixTimesScalar 1010 201
             1012:          76 Load 79(inF0)
-            1013:          76 Load 80(inF1)
-            1014:          76 ExtInst 1(GLSL.std.450) 40(FMax) 1012 1013
-            1015:          76 Load 79(inF0)
-            1016:          76 Load 80(inF1)
-            1017:          76 ExtInst 1(GLSL.std.450) 37(FMin) 1015 1016
-            1018:          76 Load 79(inF0)
-            1019:          76 Load 80(inF1)
-            1020:          76 ExtInst 1(GLSL.std.450) 26(Pow) 1018 1019
-            1021:          76 Load 79(inF0)
-            1022:          76 ExtInst 1(GLSL.std.450) 11(Radians) 1021
+            1013:          76 ExtInst 1(GLSL.std.450) 30(Log2) 1012
+            1014:          76 Load 79(inF0)
+            1015:          76 Load 80(inF1)
+            1016:          76 ExtInst 1(GLSL.std.450) 40(FMax) 1014 1015
+            1017:          76 Load 79(inF0)
+            1018:          76 Load 80(inF1)
+            1019:          76 ExtInst 1(GLSL.std.450) 37(FMin) 1017 1018
+            1020:          76 Load 79(inF0)
+            1021:          76 Load 80(inF1)
+            1022:          76 ExtInst 1(GLSL.std.450) 26(Pow) 1020 1021
             1023:          76 Load 79(inF0)
-            1024:          76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1023
+            1024:          76 ExtInst 1(GLSL.std.450) 11(Radians) 1023
             1025:          76 Load 79(inF0)
-            1026:          76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1025
+            1026:          76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1025
             1027:          76 Load 79(inF0)
-            1028:   48(fvec4) CompositeConstruct 224 224 224 224
-            1029:   48(fvec4) CompositeConstruct 225 225 225 225
-            1030:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1027 1028 1029
-            1031:          76 Load 79(inF0)
-            1032:          76 ExtInst 1(GLSL.std.450) 6(FSign) 1031
+            1028:          76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1027
+            1029:          76 Load 79(inF0)
+            1030:   48(fvec4) CompositeConstruct 223 223 223 223
+            1031:   48(fvec4) CompositeConstruct 224 224 224 224
+            1032:          76 ExtInst 1(GLSL.std.450) 43(FClamp) 1029 1030 1031
             1033:          76 Load 79(inF0)
-            1034:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1033
+            1034:          76 ExtInst 1(GLSL.std.450) 6(FSign) 1033
             1035:          76 Load 79(inF0)
             1036:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1035
-                              Store 80(inF1) 1036
             1037:          76 Load 79(inF0)
-            1038:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1037
-                              Store 81(inF2) 1038
+            1038:          76 ExtInst 1(GLSL.std.450) 13(Sin) 1037
+                              Store 80(inF1) 1038
             1039:          76 Load 79(inF0)
-            1040:          76 ExtInst 1(GLSL.std.450) 19(Sinh) 1039
+            1040:          76 ExtInst 1(GLSL.std.450) 14(Cos) 1039
+                              Store 81(inF2) 1040
             1041:          76 Load 79(inF0)
-            1042:          76 Load 80(inF1)
-            1043:          76 Load 81(inF2)
-            1044:          76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1041 1042 1043
-            1045:          76 Load 79(inF0)
-            1046:          76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1045
+            1042:          76 ExtInst 1(GLSL.std.450) 19(Sinh) 1041
+            1043:          76 Load 79(inF0)
+            1044:          76 Load 80(inF1)
+            1045:          76 Load 81(inF2)
+            1046:          76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1043 1044 1045
             1047:          76 Load 79(inF0)
-            1048:          76 Load 80(inF1)
-            1049:          76 ExtInst 1(GLSL.std.450) 48(Step) 1047 1048
-            1050:          76 Load 79(inF0)
-            1051:          76 ExtInst 1(GLSL.std.450) 15(Tan) 1050
+            1048:          76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1047
+            1049:          76 Load 79(inF0)
+            1050:          76 Load 80(inF1)
+            1051:          76 ExtInst 1(GLSL.std.450) 48(Step) 1049 1050
             1052:          76 Load 79(inF0)
-            1053:          76 ExtInst 1(GLSL.std.450) 21(Tanh) 1052
+            1053:          76 ExtInst 1(GLSL.std.450) 15(Tan) 1052
             1054:          76 Load 79(inF0)
-            1055:          76 Transpose 1054
+            1055:          76 ExtInst 1(GLSL.std.450) 21(Tanh) 1054
             1056:          76 Load 79(inF0)
-            1057:          76 ExtInst 1(GLSL.std.450) 3(Trunc) 1056
-                              ReturnValue 1059
+            1057:          76 Transpose 1056
+            1058:          76 Load 79(inF0)
+            1059:          76 ExtInst 1(GLSL.std.450) 3(Trunc) 1058
+                              ReturnValue 1061
                               FunctionEnd
 91(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;):           2 Function None 84
         85(inF0):      7(ptr) FunctionParameter
@@ -3977,51 +3979,51 @@ Shader version: 450
        89(inFM0):     61(ptr) FunctionParameter
        90(inFM1):     61(ptr) FunctionParameter
               92:             Label
-        1062(r0):      7(ptr) Variable Function
-        1066(r1):     25(ptr) Variable Function
-        1070(r2):     25(ptr) Variable Function
-        1074(r3):      7(ptr) Variable Function
-        1078(r4):     25(ptr) Variable Function
-        1082(r5):     25(ptr) Variable Function
-        1086(r6):     61(ptr) Variable Function
-        1090(r7):     61(ptr) Variable Function
-        1094(r8):     61(ptr) Variable Function
-            1063:    6(float) Load 86(inF1)
-            1064:    6(float) Load 85(inF0)
-            1065:    6(float) FMul 1063 1064
-                              Store 1062(r0) 1065
-            1067:    6(float) Load 85(inF0)
-            1068:   24(fvec2) Load 87(inFV0)
-            1069:   24(fvec2) VectorTimesScalar 1068 1067
-                              Store 1066(r1) 1069
-            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:   24(fvec2) Load 87(inFV0)
-            1080:          60 Load 89(inFM0)
-            1081:   24(fvec2) VectorTimesMatrix 1079 1080
-                              Store 1078(r4) 1081
-            1083:          60 Load 89(inFM0)
-            1084:   24(fvec2) Load 87(inFV0)
-            1085:   24(fvec2) MatrixTimesVector 1083 1084
-                              Store 1082(r5) 1085
-            1087:    6(float) Load 85(inF0)
-            1088:          60 Load 89(inFM0)
-            1089:          60 MatrixTimesScalar 1088 1087
-                              Store 1086(r6) 1089
-            1091:          60 Load 89(inFM0)
-            1092:    6(float) Load 85(inF0)
-            1093:          60 MatrixTimesScalar 1091 1092
-                              Store 1090(r7) 1093
-            1095:          60 Load 90(inFM1)
-            1096:          60 Load 89(inFM0)
-            1097:          60 MatrixTimesMatrix 1095 1096
-                              Store 1094(r8) 1097
+        1064(r0):      7(ptr) Variable Function
+        1068(r1):     25(ptr) Variable Function
+        1072(r2):     25(ptr) Variable Function
+        1076(r3):      7(ptr) Variable Function
+        1080(r4):     25(ptr) Variable Function
+        1084(r5):     25(ptr) Variable Function
+        1088(r6):     61(ptr) Variable Function
+        1092(r7):     61(ptr) Variable Function
+        1096(r8):     61(ptr) Variable Function
+            1065:    6(float) Load 86(inF1)
+            1066:    6(float) Load 85(inF0)
+            1067:    6(float) FMul 1065 1066
+                              Store 1064(r0) 1067
+            1069:    6(float) Load 85(inF0)
+            1070:   24(fvec2) Load 87(inFV0)
+            1071:   24(fvec2) VectorTimesScalar 1070 1069
+                              Store 1068(r1) 1071
+            1073:   24(fvec2) Load 87(inFV0)
+            1074:    6(float) Load 85(inF0)
+            1075:   24(fvec2) VectorTimesScalar 1073 1074
+                              Store 1072(r2) 1075
+            1077:   24(fvec2) Load 87(inFV0)
+            1078:   24(fvec2) Load 88(inFV1)
+            1079:    6(float) Dot 1077 1078
+                              Store 1076(r3) 1079
+            1081:   24(fvec2) Load 87(inFV0)
+            1082:          60 Load 89(inFM0)
+            1083:   24(fvec2) VectorTimesMatrix 1081 1082
+                              Store 1080(r4) 1083
+            1085:          60 Load 89(inFM0)
+            1086:   24(fvec2) Load 87(inFV0)
+            1087:   24(fvec2) MatrixTimesVector 1085 1086
+                              Store 1084(r5) 1087
+            1089:    6(float) Load 85(inF0)
+            1090:          60 Load 89(inFM0)
+            1091:          60 MatrixTimesScalar 1090 1089
+                              Store 1088(r6) 1091
+            1093:          60 Load 89(inFM0)
+            1094:    6(float) Load 85(inF0)
+            1095:          60 MatrixTimesScalar 1093 1094
+                              Store 1092(r7) 1095
+            1097:          60 Load 90(inFM1)
+            1098:          60 Load 89(inFM0)
+            1099:          60 MatrixTimesMatrix 1097 1098
+                              Store 1096(r8) 1099
                               Return
                               FunctionEnd
 100(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;):           2 Function None 93
@@ -4032,51 +4034,51 @@ Shader version: 450
        98(inFM0):     69(ptr) FunctionParameter
        99(inFM1):     69(ptr) FunctionParameter
              101:             Label
-        1098(r0):      7(ptr) Variable Function
-        1102(r1):     37(ptr) Variable Function
-        1106(r2):     37(ptr) Variable Function
-        1110(r3):      7(ptr) Variable Function
-        1114(r4):     37(ptr) Variable Function
-        1118(r5):     37(ptr) Variable Function
-        1122(r6):     69(ptr) Variable Function
-        1126(r7):     69(ptr) Variable Function
-        1130(r8):     69(ptr) Variable Function
-            1099:    6(float) Load 95(inF1)
-            1100:    6(float) Load 94(inF0)
-            1101:    6(float) FMul 1099 1100
-                              Store 1098(r0) 1101
-            1103:    6(float) Load 94(inF0)
-            1104:   36(fvec3) Load 96(inFV0)
-            1105:   36(fvec3) VectorTimesScalar 1104 1103
-                              Store 1102(r1) 1105
-            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:   36(fvec3) Load 96(inFV0)
-            1116:          68 Load 98(inFM0)
-            1117:   36(fvec3) VectorTimesMatrix 1115 1116
-                              Store 1114(r4) 1117
-            1119:          68 Load 98(inFM0)
-            1120:   36(fvec3) Load 96(inFV0)
-            1121:   36(fvec3) MatrixTimesVector 1119 1120
-                              Store 1118(r5) 1121
-            1123:    6(float) Load 94(inF0)
-            1124:          68 Load 98(inFM0)
-            1125:          68 MatrixTimesScalar 1124 1123
-                              Store 1122(r6) 1125
-            1127:          68 Load 98(inFM0)
-            1128:    6(float) Load 94(inF0)
-            1129:          68 MatrixTimesScalar 1127 1128
-                              Store 1126(r7) 1129
-            1131:          68 Load 99(inFM1)
-            1132:          68 Load 98(inFM0)
-            1133:          68 MatrixTimesMatrix 1131 1132
-                              Store 1130(r8) 1133
+        1100(r0):      7(ptr) Variable Function
+        1104(r1):     37(ptr) Variable Function
+        1108(r2):     37(ptr) Variable Function
+        1112(r3):      7(ptr) Variable Function
+        1116(r4):     37(ptr) Variable Function
+        1120(r5):     37(ptr) Variable Function
+        1124(r6):     69(ptr) Variable Function
+        1128(r7):     69(ptr) Variable Function
+        1132(r8):     69(ptr) Variable Function
+            1101:    6(float) Load 95(inF1)
+            1102:    6(float) Load 94(inF0)
+            1103:    6(float) FMul 1101 1102
+                              Store 1100(r0) 1103
+            1105:    6(float) Load 94(inF0)
+            1106:   36(fvec3) Load 96(inFV0)
+            1107:   36(fvec3) VectorTimesScalar 1106 1105
+                              Store 1104(r1) 1107
+            1109:   36(fvec3) Load 96(inFV0)
+            1110:    6(float) Load 94(inF0)
+            1111:   36(fvec3) VectorTimesScalar 1109 1110
+                              Store 1108(r2) 1111
+            1113:   36(fvec3) Load 96(inFV0)
+            1114:   36(fvec3) Load 97(inFV1)
+            1115:    6(float) Dot 1113 1114
+                              Store 1112(r3) 1115
+            1117:   36(fvec3) Load 96(inFV0)
+            1118:          68 Load 98(inFM0)
+            1119:   36(fvec3) VectorTimesMatrix 1117 1118
+                              Store 1116(r4) 1119
+            1121:          68 Load 98(inFM0)
+            1122:   36(fvec3) Load 96(inFV0)
+            1123:   36(fvec3) MatrixTimesVector 1121 1122
+                              Store 1120(r5) 1123
+            1125:    6(float) Load 94(inF0)
+            1126:          68 Load 98(inFM0)
+            1127:          68 MatrixTimesScalar 1126 1125
+                              Store 1124(r6) 1127
+            1129:          68 Load 98(inFM0)
+            1130:    6(float) Load 94(inF0)
+            1131:          68 MatrixTimesScalar 1129 1130
+                              Store 1128(r7) 1131
+            1133:          68 Load 99(inFM1)
+            1134:          68 Load 98(inFM0)
+            1135:          68 MatrixTimesMatrix 1133 1134
+                              Store 1132(r8) 1135
                               Return
                               FunctionEnd
 109(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;):           2 Function None 102
@@ -4087,51 +4089,51 @@ Shader version: 450
       107(inFM0):     77(ptr) FunctionParameter
       108(inFM1):     77(ptr) FunctionParameter
              110:             Label
-        1134(r0):      7(ptr) Variable Function
-        1138(r1):     49(ptr) Variable Function
-        1142(r2):     49(ptr) Variable Function
-        1146(r3):      7(ptr) Variable Function
-        1150(r4):     49(ptr) Variable Function
-        1154(r5):     49(ptr) Variable Function
-        1158(r6):     77(ptr) Variable Function
-        1162(r7):     77(ptr) Variable Function
-        1166(r8):     77(ptr) Variable Function
-            1135:    6(float) Load 104(inF1)
-            1136:    6(float) Load 103(inF0)
-            1137:    6(float) FMul 1135 1136
-                              Store 1134(r0) 1137
-            1139:    6(float) Load 103(inF0)
-            1140:   48(fvec4) Load 105(inFV0)
-            1141:   48(fvec4) VectorTimesScalar 1140 1139
-                              Store 1138(r1) 1141
-            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:   48(fvec4) Load 105(inFV0)
-            1152:          76 Load 107(inFM0)
-            1153:   48(fvec4) VectorTimesMatrix 1151 1152
-                              Store 1150(r4) 1153
-            1155:          76 Load 107(inFM0)
-            1156:   48(fvec4) Load 105(inFV0)
-            1157:   48(fvec4) MatrixTimesVector 1155 1156
-                              Store 1154(r5) 1157
-            1159:    6(float) Load 103(inF0)
-            1160:          76 Load 107(inFM0)
-            1161:          76 MatrixTimesScalar 1160 1159
-                              Store 1158(r6) 1161
-            1163:          76 Load 107(inFM0)
-            1164:    6(float) Load 103(inF0)
-            1165:          76 MatrixTimesScalar 1163 1164
-                              Store 1162(r7) 1165
-            1167:          76 Load 108(inFM1)
-            1168:          76 Load 107(inFM0)
-            1169:          76 MatrixTimesMatrix 1167 1168
-                              Store 1166(r8) 1169
+        1136(r0):      7(ptr) Variable Function
+        1140(r1):     49(ptr) Variable Function
+        1144(r2):     49(ptr) Variable Function
+        1148(r3):      7(ptr) Variable Function
+        1152(r4):     49(ptr) Variable Function
+        1156(r5):     49(ptr) Variable Function
+        1160(r6):     77(ptr) Variable Function
+        1164(r7):     77(ptr) Variable Function
+        1168(r8):     77(ptr) Variable Function
+            1137:    6(float) Load 104(inF1)
+            1138:    6(float) Load 103(inF0)
+            1139:    6(float) FMul 1137 1138
+                              Store 1136(r0) 1139
+            1141:    6(float) Load 103(inF0)
+            1142:   48(fvec4) Load 105(inFV0)
+            1143:   48(fvec4) VectorTimesScalar 1142 1141
+                              Store 1140(r1) 1143
+            1145:   48(fvec4) Load 105(inFV0)
+            1146:    6(float) Load 103(inF0)
+            1147:   48(fvec4) VectorTimesScalar 1145 1146
+                              Store 1144(r2) 1147
+            1149:   48(fvec4) Load 105(inFV0)
+            1150:   48(fvec4) Load 106(inFV1)
+            1151:    6(float) Dot 1149 1150
+                              Store 1148(r3) 1151
+            1153:   48(fvec4) Load 105(inFV0)
+            1154:          76 Load 107(inFM0)
+            1155:   48(fvec4) VectorTimesMatrix 1153 1154
+                              Store 1152(r4) 1155
+            1157:          76 Load 107(inFM0)
+            1158:   48(fvec4) Load 105(inFV0)
+            1159:   48(fvec4) MatrixTimesVector 1157 1158
+                              Store 1156(r5) 1159
+            1161:    6(float) Load 103(inF0)
+            1162:          76 Load 107(inFM0)
+            1163:          76 MatrixTimesScalar 1162 1161
+                              Store 1160(r6) 1163
+            1165:          76 Load 107(inFM0)
+            1166:    6(float) Load 103(inF0)
+            1167:          76 MatrixTimesScalar 1165 1166
+                              Store 1164(r7) 1167
+            1169:          76 Load 108(inFM1)
+            1170:          76 Load 107(inFM0)
+            1171:          76 MatrixTimesMatrix 1169 1170
+                              Store 1168(r8) 1171
                               Return
                               FunctionEnd
 129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;):           2 Function None 119
@@ -4145,90 +4147,90 @@ Shader version: 450
     127(inFM3x4):    116(ptr) FunctionParameter
     128(inFM2x4):    118(ptr) FunctionParameter
              130:             Label
-       1170(r00):      7(ptr) Variable Function
-       1174(r01):     25(ptr) Variable Function
-       1178(r02):     37(ptr) Variable Function
-       1182(r03):     25(ptr) Variable Function
-       1186(r04):     37(ptr) Variable Function
-       1190(r05):      7(ptr) Variable Function
-       1194(r06):      7(ptr) Variable Function
-       1198(r07):     37(ptr) Variable Function
-       1202(r08):     25(ptr) Variable Function
-       1206(r09):     25(ptr) Variable Function
-       1210(r10):     37(ptr) Variable Function
-       1214(r11):    112(ptr) Variable Function
-       1218(r12):    114(ptr) Variable Function
-       1222(r13):     61(ptr) Variable Function
-       1226(r14):    112(ptr) Variable Function
-       1230(r15):    118(ptr) Variable Function
-       1234(r16):    116(ptr) Variable Function
-            1171:    6(float) Load 121(inF1)
-            1172:    6(float) Load 120(inF0)
-            1173:    6(float) FMul 1171 1172
-                              Store 1170(r00) 1173
-            1175:    6(float) Load 120(inF0)
-            1176:   24(fvec2) Load 122(inFV2)
-            1177:   24(fvec2) VectorTimesScalar 1176 1175
-                              Store 1174(r01) 1177
-            1179:    6(float) Load 120(inF0)
-            1180:   36(fvec3) Load 123(inFV3)
-            1181:   36(fvec3) VectorTimesScalar 1180 1179
-                              Store 1178(r02) 1181
-            1183:   24(fvec2) Load 122(inFV2)
-            1184:    6(float) Load 120(inF0)
-            1185:   24(fvec2) VectorTimesScalar 1183 1184
-                              Store 1182(r03) 1185
-            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)
-            1193:    6(float) Dot 1191 1192
-                              Store 1190(r05) 1193
-            1195:   36(fvec3) Load 123(inFV3)
-            1196:   36(fvec3) Load 123(inFV3)
-            1197:    6(float) Dot 1195 1196
-                              Store 1194(r06) 1197
-            1199:         111 Load 124(inFM2x3)
-            1200:   24(fvec2) Load 122(inFV2)
-            1201:   36(fvec3) MatrixTimesVector 1199 1200
-                              Store 1198(r07) 1201
-            1203:         113 Load 125(inFM3x2)
-            1204:   36(fvec3) Load 123(inFV3)
-            1205:   24(fvec2) MatrixTimesVector 1203 1204
-                              Store 1202(r08) 1205
-            1207:   36(fvec3) Load 123(inFV3)
-            1208:         111 Load 124(inFM2x3)
-            1209:   24(fvec2) VectorTimesMatrix 1207 1208
-                              Store 1206(r09) 1209
-            1211:   24(fvec2) Load 122(inFV2)
-            1212:         113 Load 125(inFM3x2)
-            1213:   36(fvec3) VectorTimesMatrix 1211 1212
-                              Store 1210(r10) 1213
-            1215:    6(float) Load 120(inF0)
-            1216:         111 Load 124(inFM2x3)
-            1217:         111 MatrixTimesScalar 1216 1215
-                              Store 1214(r11) 1217
-            1219:    6(float) Load 120(inF0)
-            1220:         113 Load 125(inFM3x2)
-            1221:         113 MatrixTimesScalar 1220 1219
-                              Store 1218(r12) 1221
-            1223:         113 Load 125(inFM3x2)
-            1224:         111 Load 124(inFM2x3)
-            1225:          60 MatrixTimesMatrix 1223 1224
-                              Store 1222(r13) 1225
-            1227:          68 Load 126(inFM3x3)
-            1228:         111 Load 124(inFM2x3)
-            1229:         111 MatrixTimesMatrix 1227 1228
-                              Store 1226(r14) 1229
-            1231:         115 Load 127(inFM3x4)
-            1232:         111 Load 124(inFM2x3)
-            1233:         117 MatrixTimesMatrix 1231 1232
-                              Store 1230(r15) 1233
-            1235:         117 Load 128(inFM2x4)
-            1236:         113 Load 125(inFM3x2)
-            1237:         115 MatrixTimesMatrix 1235 1236
-                              Store 1234(r16) 1237
+       1172(r00):      7(ptr) Variable Function
+       1176(r01):     25(ptr) Variable Function
+       1180(r02):     37(ptr) Variable Function
+       1184(r03):     25(ptr) Variable Function
+       1188(r04):     37(ptr) Variable Function
+       1192(r05):      7(ptr) Variable Function
+       1196(r06):      7(ptr) Variable Function
+       1200(r07):     37(ptr) Variable Function
+       1204(r08):     25(ptr) Variable Function
+       1208(r09):     25(ptr) Variable Function
+       1212(r10):     37(ptr) Variable Function
+       1216(r11):    112(ptr) Variable Function
+       1220(r12):    114(ptr) Variable Function
+       1224(r13):     61(ptr) Variable Function
+       1228(r14):    112(ptr) Variable Function
+       1232(r15):    118(ptr) Variable Function
+       1236(r16):    116(ptr) Variable Function
+            1173:    6(float) Load 121(inF1)
+            1174:    6(float) Load 120(inF0)
+            1175:    6(float) FMul 1173 1174
+                              Store 1172(r00) 1175
+            1177:    6(float) Load 120(inF0)
+            1178:   24(fvec2) Load 122(inFV2)
+            1179:   24(fvec2) VectorTimesScalar 1178 1177
+                              Store 1176(r01) 1179
+            1181:    6(float) Load 120(inF0)
+            1182:   36(fvec3) Load 123(inFV3)
+            1183:   36(fvec3) VectorTimesScalar 1182 1181
+                              Store 1180(r02) 1183
+            1185:   24(fvec2) Load 122(inFV2)
+            1186:    6(float) Load 120(inF0)
+            1187:   24(fvec2) VectorTimesScalar 1185 1186
+                              Store 1184(r03) 1187
+            1189:   36(fvec3) Load 123(inFV3)
+            1190:    6(float) Load 120(inF0)
+            1191:   36(fvec3) VectorTimesScalar 1189 1190
+                              Store 1188(r04) 1191
+            1193:   24(fvec2) Load 122(inFV2)
+            1194:   24(fvec2) Load 122(inFV2)
+            1195:    6(float) Dot 1193 1194
+                              Store 1192(r05) 1195
+            1197:   36(fvec3) Load 123(inFV3)
+            1198:   36(fvec3) Load 123(inFV3)
+            1199:    6(float) Dot 1197 1198
+                              Store 1196(r06) 1199
+            1201:         111 Load 124(inFM2x3)
+            1202:   24(fvec2) Load 122(inFV2)
+            1203:   36(fvec3) MatrixTimesVector 1201 1202
+                              Store 1200(r07) 1203
+            1205:         113 Load 125(inFM3x2)
+            1206:   36(fvec3) Load 123(inFV3)
+            1207:   24(fvec2) MatrixTimesVector 1205 1206
+                              Store 1204(r08) 1207
+            1209:   36(fvec3) Load 123(inFV3)
+            1210:         111 Load 124(inFM2x3)
+            1211:   24(fvec2) VectorTimesMatrix 1209 1210
+                              Store 1208(r09) 1211
+            1213:   24(fvec2) Load 122(inFV2)
+            1214:         113 Load 125(inFM3x2)
+            1215:   36(fvec3) VectorTimesMatrix 1213 1214
+                              Store 1212(r10) 1215
+            1217:    6(float) Load 120(inF0)
+            1218:         111 Load 124(inFM2x3)
+            1219:         111 MatrixTimesScalar 1218 1217
+                              Store 1216(r11) 1219
+            1221:    6(float) Load 120(inF0)
+            1222:         113 Load 125(inFM3x2)
+            1223:         113 MatrixTimesScalar 1222 1221
+                              Store 1220(r12) 1223
+            1225:         113 Load 125(inFM3x2)
+            1226:         111 Load 124(inFM2x3)
+            1227:          60 MatrixTimesMatrix 1225 1226
+                              Store 1224(r13) 1227
+            1229:          68 Load 126(inFM3x3)
+            1230:         111 Load 124(inFM2x3)
+            1231:         111 MatrixTimesMatrix 1229 1230
+                              Store 1228(r14) 1231
+            1233:         115 Load 127(inFM3x4)
+            1234:         111 Load 124(inFM2x3)
+            1235:         117 MatrixTimesMatrix 1233 1234
+                              Store 1232(r15) 1235
+            1237:         117 Load 128(inFM2x4)
+            1238:         113 Load 125(inFM3x2)
+            1239:         115 MatrixTimesMatrix 1237 1238
+                              Store 1236(r16) 1239
                               Return
                               FunctionEnd
index 038c7f0..24ce571 100644 (file)
@@ -5,7 +5,7 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 30
+// Id's are bound by 31
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -16,14 +16,14 @@ Linked fragment stage:
                               Name 9  "Color"
                               Name 12  "g_tScene[0]"
                               Name 16  "g_tSamp"
-                              Name 24  "g_tScene[1]"
+                              Name 25  "g_tScene[1]"
                               Decorate 9(Color) Location 0
                               Decorate 12(g_tScene[0]) DescriptorSet 0
                               Decorate 12(g_tScene[0]) Binding 10
                               Decorate 16(g_tSamp) DescriptorSet 0
                               Decorate 16(g_tSamp) Binding 5
-                              Decorate 24(g_tScene[1]) DescriptorSet 0
-                              Decorate 24(g_tScene[1]) Binding 11
+                              Decorate 25(g_tScene[1]) DescriptorSet 0
+                              Decorate 25(g_tScene[1]) Binding 11
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -39,19 +39,20 @@ Linked fragment stage:
               18:             TypeSampledImage 10
               20:             TypeVector 6(float) 2
               21:    6(float) Constant 1050253722
-              22:   20(fvec2) ConstantComposite 21 21
- 24(g_tScene[1]):     11(ptr) Variable UniformConstant
+              22:    6(float) Constant 1053609165
+              23:   20(fvec2) ConstantComposite 21 22
+ 25(g_tScene[1]):     11(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
               13:          10 Load 12(g_tScene[0])
               17:          14 Load 16(g_tSamp)
               19:          18 SampledImage 13 17
-              23:    7(fvec4) ImageSampleImplicitLod 19 22
-              25:          10 Load 24(g_tScene[1])
-              26:          14 Load 16(g_tSamp)
-              27:          18 SampledImage 25 26
-              28:    7(fvec4) ImageSampleImplicitLod 27 22
-              29:    7(fvec4) FAdd 23 28
-                              Store 9(Color) 29
+              24:    7(fvec4) ImageSampleImplicitLod 19 23
+              26:          10 Load 25(g_tScene[1])
+              27:          14 Load 16(g_tSamp)
+              28:          18 SampledImage 26 27
+              29:    7(fvec4) ImageSampleImplicitLod 28 23
+              30:    7(fvec4) FAdd 24 29
+                              Store 9(Color) 30
                               Return
                               FunctionEnd
index 03e7ed3..15db637 100644 (file)
@@ -33,7 +33,7 @@ float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint i
     clip(inF0);
     float r014 = cos(inF0);
     float r015 = cosh(inF0);
-    uint r016 = countbits(7);
+    int r016 = countbits(7);
     float r017 = ddx(inF0);
     float r018 = ddx_coarse(inF0);
     float r019 = ddx_fine(inF0);
@@ -111,7 +111,7 @@ float2 PixelShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, u
     clip(inF0);
     float2 r013 = cos(inF0);
     float2 r015 = cosh(inF0);
-    uint2 r016 = countbits(int2(7,3));
+    int2 r016 = countbits(int2(7,3));
     float2 r017 = ddx(inF0);
     float2 r018 = ddx_coarse(inF0);
     float2 r019 = ddx_fine(inF0);
diff --git a/Test/hlsl.intrinsics.promote.down.frag b/Test/hlsl.intrinsics.promote.down.frag
new file mode 100644 (file)
index 0000000..5f4882b
--- /dev/null
@@ -0,0 +1,22 @@
+
+struct PS_OUTPUT { float4 color : SV_Target0; };
+
+int    i;
+uint   u;
+float  f;
+bool   b;
+
+int2   i2;
+uint2  u2;
+float2 f2;
+bool2  b2;
+
+PS_OUTPUT main()
+{
+    uint r00  = countbits(f);
+    uint2 r01 = reversebits(f2);
+
+    PS_OUTPUT ps_output;
+    ps_output.color = float4(0,0,0,0);
+    return ps_output;
+};
diff --git a/Test/hlsl.intrinsics.promote.frag b/Test/hlsl.intrinsics.promote.frag
new file mode 100644 (file)
index 0000000..89d3e68
--- /dev/null
@@ -0,0 +1,79 @@
+
+struct PS_OUTPUT { float4 color : SV_Target0; };
+
+int    i;
+uint   u;
+float  f;
+bool   b;
+
+int2   i2;
+uint2  u2;
+float2 f2;
+bool2  b2;
+
+Buffer    <float>  g_tTexbfs;
+Texture1D <float4> g_tTex1df4;
+uint  upos;
+float fpos;
+
+PS_OUTPUT main()
+{
+    // Same shapes:
+
+    float r00 = max(b,  f);
+    uint  r01 = max(b,  u);
+    int   r02 = max(b,  i);
+    float r03 = max(i,  f);
+    float r04 = max(u,  f);
+
+    float2 r10 = max(b2,  f2);
+    uint2  r11 = max(b2,  u2);
+    int2   r12 = max(b2,  i2);
+    float2 r13 = max(i2,  f2);
+    float2 r14 = max(u2,  f2);
+
+    float2 r20 = clamp(i2, u2, f2);  // 3 args, converts all to best type.
+    uint2  r21 = clamp(b2, u2, b2);
+    float2 r22 = clamp(b2, f2, b2);
+
+    // Mixed shapes:
+    float2 r30 = max(b,  f2);
+    uint2  r31 = max(b,  u2);
+    int2   r32 = max(b,  i2);
+    float2 r33 = max(i,  f2);
+    float2 r34 = max(u,  f2);
+
+    float2 r40 = clamp(i, u2, f2);  // 3 args, converts all to best type.
+    uint2  r41 = clamp(b2, u, b2);
+    float2 r42 = clamp(b2, f, b);
+    int2   r43 = clamp(i, i2, u2);
+
+    float r50 = g_tTexbfs.Load(upos);
+    float r51 = g_tTexbfs.Load(fpos);
+
+    int MipLevel;
+
+    uint WidthU;
+    uint HeightU;
+    uint ElementsU;
+    uint DepthU;
+    uint NumberOfLevelsU;
+    uint NumberOfSamplesU;
+
+    int  WidthI;
+    int  HeightI;
+    int  ElementsI;
+    int  DepthI;
+    int  NumberOfLevelsI;
+    int  NumberOfSamplesI;
+
+    g_tTex1df4 . GetDimensions(WidthI);
+    g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsU);
+    g_tTex1df4 . GetDimensions(6, WidthU, NumberOfLevelsI);
+    g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsI);
+
+    // max(i2, f2);
+    PS_OUTPUT ps_output;
+    ps_output.color = r00;
+    return ps_output;
+};
diff --git a/Test/hlsl.intrinsics.promote.outputs.frag b/Test/hlsl.intrinsics.promote.outputs.frag
new file mode 100644 (file)
index 0000000..42fa3e8
--- /dev/null
@@ -0,0 +1,49 @@
+
+struct PS_OUTPUT { float4 color : SV_Target0; };
+
+int    i;
+uint   u;
+float  f;
+bool   b;
+
+int2   i2;
+uint2  u2;
+float2 f2;
+bool2  b2;
+
+Buffer    <float>  g_tTexbfs;
+Texture1D <float4> g_tTex1df4;
+uint  upos;
+float fpos;
+
+PS_OUTPUT main()
+{
+    int MipLevel;
+
+    uint WidthU;
+    uint HeightU;
+    uint ElementsU;
+    uint DepthU;
+    uint NumberOfLevelsU;
+    uint NumberOfSamplesU;
+
+    int  WidthI;
+    int  HeightI;
+    int  ElementsI;
+    int  DepthI;
+    int  NumberOfLevelsI;
+    int  NumberOfSamplesI;
+
+    saturate(fpos);
+
+    // Test output promotions
+    g_tTex1df4 . GetDimensions(WidthI);
+    g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsU);
+    g_tTex1df4 . GetDimensions(6, WidthU, NumberOfLevelsI);
+    g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsI);
+
+    // max(i2, f2);
+    PS_OUTPUT ps_output;
+    ps_output.color = 0;
+    return ps_output;
+};
index b943791..05c4925 100644 (file)
@@ -10,6 +10,6 @@ struct PS_OUTPUT
 
 void main(out PS_OUTPUT psout)
 {
-    psout.Color = g_tScene[0].Sample(g_tSamp, 0.3) +
-                  g_tScene[1].Sample(g_tSamp, 0.3);
+    psout.Color = g_tScene[0].Sample(g_tSamp, float2(0.3,0.4)) +
+                  g_tScene[1].Sample(g_tSamp, float2(0.3,0.4));
 }
index c81c395..314c8e9 100644 (file)
@@ -10,6 +10,6 @@ struct PS_OUTPUT
 
 void main(out PS_OUTPUT psout)
 {
-    psout.Color = g_tScene[0].Sample(g_tSamp, 0.3) +
-                  g_tScene[1].Sample(g_tSamp, 0.3);
+    psout.Color = g_tScene[0].Sample(g_tSamp, float2(0.3, 0.3)) +
+                  g_tScene[1].Sample(g_tSamp, float2(0.3, 0.3));
 }
index 9c2590f..b15a80a 100644 (file)
@@ -45,6 +45,7 @@
 #include "propagateNoContraction.h"
 
 #include <cfloat>
+#include <utility>
 
 namespace glslang {
 
@@ -575,6 +576,27 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
     case EOpDivAssign:
     case EOpModAssign:
 
+    case EOpAtan:
+    case EOpClamp:
+    case EOpCross:
+    case EOpDistance:
+    case EOpDot:
+    case EOpDst:
+    case EOpFaceForward:
+    case EOpFma:
+    case EOpFrexp:
+    case EOpLdexp:
+    case EOpMix:
+    case EOpLit:
+    case EOpMax:
+    case EOpMin:
+    case EOpModf:
+    case EOpPow:
+    case EOpReflect:
+    case EOpRefract:
+    case EOpSmoothStep:
+    case EOpStep:
+
     case EOpSequence:
     case EOpConstructStruct:
 
@@ -833,6 +855,9 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
     if (profile == EEsProfile || version == 110)
         return false;
 
+    if (from == to)
+        return true;
+
     // TODO: Move more policies into language-specific handlers.
     // Some languages allow more general (or potentially, more specific) conversions under some conditions.
     if (source == EShSourceHlsl) {
@@ -901,6 +926,8 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
             return version >= 400;
         case EbtUint:
             return true;
+        case EbtBool:
+            return (source == EShSourceHlsl);
         default:
             return false;
         }
@@ -908,6 +935,8 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
         switch (from) {
         case EbtInt:
             return true;
+        case EbtBool:
+            return (source == EShSourceHlsl);
         default:
             return false;
         }
@@ -1747,6 +1776,9 @@ bool TIntermediate::promote(TIntermOperator* node)
     if (node->getAsBinaryNode())
         return promoteBinary(*node->getAsBinaryNode());
 
+    if (node->getAsAggregate())
+        return promoteAggregate(*node->getAsAggregate());
+
     return false;
 }
 
@@ -2190,6 +2222,77 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
     return true;
 }
 
+//
+// See TIntermediate::promote
+//
+bool TIntermediate::promoteAggregate(TIntermAggregate& node)
+{
+    TOperator op = node.getOp();
+    TIntermSequence& args = node.getSequence();
+    const int numArgs = args.size();
+
+    // Presently, only hlsl does intrinsic promotions.
+    if (getSource() != EShSourceHlsl)
+        return true;
+
+    // set of opcodes that can be promoted in this manner.
+    switch (op) {
+    case EOpAtan:
+    case EOpClamp:
+    case EOpCross:
+    case EOpDistance:
+    case EOpDot:
+    case EOpDst:
+    case EOpFaceForward:
+        // case EOpFindMSB: TODO: ?? 
+        // case EOpFindLSB: TODO: ??
+    case EOpFma:
+    case EOpMod:
+    case EOpFrexp:
+    case EOpLdexp:
+    case EOpMix:
+    case EOpLit:
+    case EOpMax:
+    case EOpMin:
+    case EOpModf:
+        // case EOpGenMul: TODO: ??
+    case EOpPow:
+    case EOpReflect:
+    case EOpRefract:
+    // case EOpSinCos: TODO: ??
+    case EOpSmoothStep:
+    case EOpStep:
+        break;
+    default:
+        return true;
+    }
+
+    // TODO: array and struct behavior
+
+    // Try converting all nodes to the given node's type
+    TIntermSequence convertedArgs(numArgs, nullptr);
+
+    // Try to convert all types to the nonConvArg type.
+    for (int nonConvArg = 0; nonConvArg < numArgs; ++nonConvArg) {
+        // Try converting all args to this arg's type
+        for (int convArg = 0; convArg < numArgs; ++convArg) {
+            convertedArgs[convArg] = addConversion(op, args[nonConvArg]->getAsTyped()->getType(),
+                                                   args[convArg]->getAsTyped());
+        }
+
+        // If we successfully converted all the args, use the result.
+        if (std::all_of(convertedArgs.begin(), convertedArgs.end(),
+                        [](const TIntermNode* node) { return node != nullptr; })) {
+
+            std::swap(args, convertedArgs);
+            return true;
+        }
+    }
+
+    return false;
+}
+
+
 void TIntermBinary::updatePrecision()
 {
 #ifdef AMD_EXTENSIONS
index 2e10134..53a414d 100644 (file)
@@ -370,6 +370,9 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy
 //
 void TIntermediate::finalCheck(TInfoSink& infoSink)
 {
+    if (getTreeRoot() == nullptr)
+        return;
+
     if (source == EShSourceGlsl && numEntryPoints < 1)
         error(infoSink, "Missing entry point: Each stage requires one entry point");
 
index 6a4cfd0..80c24e0 100644 (file)
@@ -381,6 +381,7 @@ public:
     int addXfbBufferOffset(const TType&);
     unsigned int computeTypeXfbSize(const TType&, bool& containsDouble) const;
     static int getBaseAlignment(const TType&, int& size, int& stride, bool std140, bool rowMajor);
+    bool promote(TIntermOperator*);
 
 protected:
     TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&);
@@ -395,10 +396,10 @@ protected:
     bool userOutputUsed() const;
     static int getBaseAlignmentScalar(const TType&, int& size);
     bool isSpecializationOperation(const TIntermOperator&) const;
-    bool promote(TIntermOperator*);
     bool promoteUnary(TIntermUnary&);
     bool promoteBinary(TIntermBinary&);
     void addSymbolLinkageNode(TIntermAggregate*& linkage, TSymbolTable&, const TString&);
+    bool promoteAggregate(TIntermAggregate&);
     
     const EShLanguage language;  // stage, known at construction time
     EShSource source;            // source language, known a bit later
index 8c611f2..f470b87 100644 (file)
@@ -134,6 +134,9 @@ INSTANTIATE_TEST_CASE_P(
         {"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"},
         {"hlsl.intrinsics.negative.frag", "PixelShaderFunction"},
         {"hlsl.intrinsics.negative.vert", "VertexShaderFunction"},
+        {"hlsl.intrinsics.promote.frag", "main"},
+        {"hlsl.intrinsics.promote.down.frag", "main"},
+        {"hlsl.intrinsics.promote.outputs.frag", "main"},
         {"hlsl.layout.frag", "main"},
         {"hlsl.load.2dms.dx10.frag", "main"},
         {"hlsl.load.array.dx10.frag", "main"},
index 4957767..d2ad134 100755 (executable)
@@ -2555,7 +2555,7 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct
         //
         const TFunction* fnCandidate;
         bool builtIn;
-        fnCandidate = findFunction(loc, *function, builtIn);
+        fnCandidate = findFunction(loc, *function, builtIn, arguments);
         if (fnCandidate) {
             // This is a declared function that might map to
             //  - a built-in operator,
@@ -2597,21 +2597,27 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct
                 }
             }
 
+            // for decompositions, since we want to operate on the function node, not the aggregate holding
+            // output conversions.
+            const TIntermTyped* fnNode = result; 
+
+            decomposeIntrinsic(loc, result, arguments);       // HLSL->AST intrinsic decompositions
+            decomposeSampleMethods(loc, result, arguments);   // HLSL->AST sample method decompositions
+            decomposeGeometryMethods(loc, result, arguments); // HLSL->AST geometry method decompositions
+
             // Convert 'out' arguments.  If it was a constant folded built-in, it won't be an aggregate anymore.
             // Built-ins with a single argument aren't called with an aggregate, but they also don't have an output.
             // Also, build the qualifier list for user function calls, which are always called with an aggregate.
-            if (result->getAsAggregate()) {
+            // We don't do this is if there has been a decomposition, which will have added its own conversions
+            // for output parameters.
+            if (result == fnNode && result->getAsAggregate()) {
                 TQualifierList& qualifierList = result->getAsAggregate()->getQualifierList();
                 for (int i = 0; i < fnCandidate->getParamCount(); ++i) {
                     TStorageQualifier qual = (*fnCandidate)[i].type->getQualifier().storage;
                     qualifierList.push_back(qual);
                 }
-                result = addOutputArgumentConversions(*fnCandidate, *result->getAsAggregate());
+                result = addOutputArgumentConversions(*fnCandidate, *result->getAsOperator());
             }
-
-            decomposeIntrinsic(loc, result, arguments);       // HLSL->AST intrinsic decompositions
-            decomposeSampleMethods(loc, result, arguments);   // HLSL->AST sample method decompositions
-            decomposeGeometryMethods(loc, result, arguments); // HLSL->AST geometry method decompositions
         }
     }
 
@@ -2724,9 +2730,19 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI
 //
 // Returns a node of a subtree that evaluates to the return value of the function.
 //
-TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode)
+TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermOperator& intermNode)
 {
-    TIntermSequence& arguments = intermNode.getSequence();
+    assert (intermNode.getAsAggregate() != nullptr || intermNode.getAsUnaryNode() != nullptr);
+
+    const TSourceLoc& loc = intermNode.getLoc();
+
+    TIntermSequence argSequence; // temp sequence for unary node args
+
+    if (intermNode.getAsUnaryNode())
+        argSequence.push_back(intermNode.getAsUnaryNode()->getOperand());
+
+    TIntermSequence& arguments = argSequence.empty() ? intermNode.getAsAggregate()->getSequence() : argSequence;
+
     const auto needsConversion = [&](int argNum) {
         return function[argNum].type->getQualifier().isParamOutput() &&
                (*function[argNum].type != arguments[argNum]->getAsTyped()->getType() ||
@@ -2759,8 +2775,8 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu
     if (intermNode.getBasicType() != EbtVoid) {
         // do the "tempRet = function(...), " bit from above
         tempRet = makeInternalVariable("tempReturn", intermNode.getType());
-        TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, intermNode.getLoc());
-        conversionTree = intermediate.addAssign(EOpAssign, tempRetNode, &intermNode, intermNode.getLoc());
+        TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, loc);
+        conversionTree = intermediate.addAssign(EOpAssign, tempRetNode, &intermNode, loc);
     } else
         conversionTree = &intermNode;
 
@@ -2775,7 +2791,7 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu
             // Make a temporary for what the function expects the argument to look like.
             TVariable* tempArg = makeInternalVariable("tempArg", *function[i].type);
             tempArg->getWritableType().getQualifier().makeTemporary();
-            TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, intermNode.getLoc());
+            TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, loc);
 
             // This makes the deepest level, the member-wise copy
             TIntermTyped* tempAssign = handleAssign(arguments[i]->getLoc(), EOpAssign, arguments[i]->getAsTyped(), tempArgNode);
@@ -2783,17 +2799,18 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu
             conversionTree = intermediate.growAggregate(conversionTree, tempAssign, arguments[i]->getLoc());
 
             // replace the argument with another node for the same tempArg variable
-            arguments[i] = intermediate.addSymbol(*tempArg, intermNode.getLoc());
+            arguments[i] = intermediate.addSymbol(*tempArg, loc);
         }
     }
 
     // Finalize the tree topology (see bigger comment above).
     if (tempRet) {
         // do the "..., tempRet" bit from above
-        TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, intermNode.getLoc());
-        conversionTree = intermediate.growAggregate(conversionTree, tempRetNode, intermNode.getLoc());
+        TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, loc);
+        conversionTree = intermediate.growAggregate(conversionTree, tempRetNode, loc);
     }
-    conversionTree = intermediate.setAggregateOperator(conversionTree, EOpComma, intermNode.getType(), intermNode.getLoc());
+
+    conversionTree = intermediate.setAggregateOperator(conversionTree, EOpComma, intermNode.getType(), loc);
 
     return conversionTree;
 }
@@ -4339,7 +4356,8 @@ void HlslParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQuali
 //
 // Return the function symbol if found, otherwise nullptr.
 //
-const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn)
+const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn,
+                                                TIntermNode* args)
 {
     // const TFunction* function = nullptr;
 
@@ -4445,9 +4463,81 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu
     // send to the generic selector
     const TFunction* bestMatch = selectFunction(candidateList, call, convertible, better, tie);
 
-    if (bestMatch == nullptr)
+    if (bestMatch == nullptr) {
         error(loc, "no matching overloaded function found", call.getName().c_str(), "");
-    else if (tie)
+        return nullptr;
+    }
+
+    // For builtins, we can convert across the arguments.  This will happen in several steps:
+    // Step 1:  If there's an exact match, use it.
+    // Step 2a: Otherwise, get the operator from the best match and promote arguments:
+    // Step 2b: reconstruct the TFunction based on the new arg types
+    // Step 3:  Re-select after type promotion is applied, to find proper candidate.
+    if (builtIn) {
+        // Step 1: If there's an exact match, use it.
+        if (call.getMangledName() == bestMatch->getMangledName())
+            return bestMatch;
+
+        // Step 2a: Otherwise, get the operator from the best match and promote arguments as if we
+        // are that kind of operator.
+        if (args != nullptr) {
+            // The arg list can be a unary node, or an aggregate.  We have to handle both.
+            // We will use the normal promote() facilities, which require an interm node.
+            TIntermOperator* promote = nullptr;
+
+            if (call.getParamCount() == 1) {
+                promote = new TIntermUnary(bestMatch->getBuiltInOp());
+                promote->getAsUnaryNode()->setOperand(args->getAsTyped());
+            } else {
+                promote = new TIntermAggregate(bestMatch->getBuiltInOp());
+                promote->getAsAggregate()->getSequence().swap(args->getAsAggregate()->getSequence());
+            }
+
+            if (! intermediate.promote(promote))
+                return nullptr;
+
+            // Obtain the promoted arg list.
+            if (call.getParamCount() == 1) {
+                args = promote->getAsUnaryNode()->getOperand();
+            } else {
+                promote->getAsAggregate()->getSequence().swap(args->getAsAggregate()->getSequence());
+            }
+        }
+
+        // Step 2b: reconstruct the TFunction based on the new arg types
+        TFunction convertedCall(&call.getName(), call.getType(), call.getBuiltInOp());
+
+        if (args->getAsAggregate()) {
+            // Handle aggregates: put all args into the new function call
+            for (int arg=0; arg<int(args->getAsAggregate()->getSequence().size()); ++arg) {
+                // TODO: But for constness, we could avoid the new & shallowCopy, and use the pointer directly.
+                TParameter param = { 0, new TType };
+                param.type->shallowCopy(args->getAsAggregate()->getSequence()[arg]->getAsTyped()->getType());
+                convertedCall.addParameter(param);
+            }
+        } else if (args->getAsUnaryNode()) {
+            // Handle unaries: put all args into the new function call
+            TParameter param = { 0, new TType };
+            param.type->shallowCopy(args->getAsUnaryNode()->getOperand()->getAsTyped()->getType());
+            convertedCall.addParameter(param);
+        } else if (args->getAsTyped()) {
+            // Handle bare e.g, floats, not in an aggregate.
+            TParameter param = { 0, new TType };
+            param.type->shallowCopy(args->getAsTyped()->getType());
+            convertedCall.addParameter(param);
+        } else {
+            assert(0); // unknown argument list.
+            return nullptr;
+        }
+
+        // Step 3: Re-select after type promotion, to find proper candidate
+        // send to the generic selector
+        bestMatch = selectFunction(candidateList, convertedCall, convertible, better, tie);
+
+        // At this point, there should be no tie.
+    }
+
+    if (tie)
         error(loc, "ambiguous best function under implicit type conversion", call.getName().c_str(), "");
 
     return bestMatch;
index 3862c10..0f43671 100755 (executable)
@@ -84,7 +84,7 @@ public:
     void decomposeGeometryMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
     TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*);
     void addInputArgumentConversions(const TFunction&, TIntermNode*&) const;
-    TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&);
+    TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermOperator&);
     void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&);
     TFunction* handleConstructorCall(const TSourceLoc&, const TType&);
     void handleSemantic(TSourceLoc, TQualifier&, const TString& semantic);
@@ -125,7 +125,7 @@ public:
     void mergeObjectLayoutQualifiers(TQualifier& dest, const TQualifier& src, bool inheritOnly);
     void checkNoShaderLayouts(const TSourceLoc&, const TShaderQualifiers&);
 
-    const TFunction* findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn);
+    const TFunction* findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn, TIntermNode* args);
     void declareTypedef(const TSourceLoc&, TString& identifier, const TType&, TArraySizes* typeArray = 0);
     TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, TType&, TIntermTyped* initializer = 0);
     TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&);
index 05dc7cf..8ecaec9 100755 (executable)
@@ -558,8 +558,8 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
         { "AllMemoryBarrier",                 nullptr, nullptr,   "-",              "-",             EShLangCS },
         { "AllMemoryBarrierWithGroupSync",    nullptr, nullptr,   "-",              "-",             EShLangCS },
         { "any",                              "S",     "B",       "SVM",            "BFIU",          EShLangAll },
-        { "asdouble",                         "S",     "D",       "S,",             "U,",            EShLangAll },
-        { "asdouble",                         "V2",    "D",       "V2,",            "U,",            EShLangAll },
+        { "asdouble",                         "S",     "D",       "S,",             "UI,",           EShLangAll },
+        { "asdouble",                         "V2",    "D",       "V2,",            "UI,",           EShLangAll },
         { "asfloat",                          nullptr, "F",       "SVM",            "BFIU",          EShLangAll },
         { "asin",                             nullptr, nullptr,   "SVM",            "F",             EShLangAll },
         { "asint",                            nullptr, "I",       "SVM",            "FU",            EShLangAll },
@@ -572,7 +572,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
         { "clip",                             "-",     "-",       "SVM",            "F",             EShLangPS },
         { "cos",                              nullptr, nullptr,   "SVM",            "F",             EShLangAll },
         { "cosh",                             nullptr, nullptr,   "SVM",            "F",             EShLangAll },
-        { "countbits",                        nullptr, nullptr,   "SV",             "U",             EShLangAll },
+        { "countbits",                        nullptr, nullptr,   "SV",             "UI",            EShLangAll },
         { "cross",                            nullptr, nullptr,   "V3,",            "F,",            EShLangAll },
         { "D3DCOLORtoUBYTE4",                 "V4",    "I",       "V4",             "F",             EShLangAll },
         { "ddx",                              nullptr, nullptr,   "SVM",            "F",             EShLangPS },
@@ -636,9 +636,9 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
         { "log10",                            nullptr, nullptr,   "SVM",            "F",             EShLangAll },
         { "log2",                             nullptr, nullptr,   "SVM",            "F",             EShLangAll },
         { "mad",                              nullptr, nullptr,   "SVM,,",          "DFUI,,",        EShLangAll },
-        { "max",                              nullptr, nullptr,   "SVM,",           "FI,",           EShLangAll },
-        { "min",                              nullptr, nullptr,   "SVM,",           "FI,",           EShLangAll },
-        { "modf",                             nullptr, nullptr,   "SVM,>",          "FI,",           EShLangAll },
+        { "max",                              nullptr, nullptr,   "SVM,",           "FIU,",          EShLangAll },
+        { "min",                              nullptr, nullptr,   "SVM,",           "FIU,",          EShLangAll },
+        { "modf",                             nullptr, nullptr,   "SVM,>",          "FIU,",          EShLangAll },
         { "msad4",                            "V4",    "U",       "S,V2,V4",        "U,,",           EShLangAll },
         { "mul",                              "S",     nullptr,   "S,S",            "FI,",           EShLangAll },
         { "mul",                              "V",     nullptr,   "S,V",            "FI,",           EShLangAll },
@@ -665,7 +665,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
         { "rcp",                              nullptr, nullptr,   "SVM",            "FD",            EShLangAll },
         { "reflect",                          nullptr, nullptr,   "V,",             "F,",            EShLangAll },
         { "refract",                          nullptr, nullptr,   "V,V,S",          "F,,",           EShLangAll },
-        { "reversebits",                      nullptr, nullptr,   "SV",             "U",             EShLangAll },
+        { "reversebits",                      nullptr, nullptr,   "SV",             "UI",            EShLangAll },
         { "round",                            nullptr, nullptr,   "SVM",            "F",             EShLangAll },
         { "rsqrt",                            nullptr, nullptr,   "SVM",            "F",             EShLangAll },
         { "saturate",                         nullptr, nullptr ,  "SVM",            "F",             EShLangAll },
@@ -735,7 +735,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
         // RWTexture loads
         { "Load",                             "V4",    nullptr,   "!#,V",           "FIU,I",         EShLangAll },
         // (RW)Buffer loads
-        { "Load",                             "V4",    nullptr,   "~*1,V",           "FIU,I",         EShLangAll },
+        { "Load",                             "V4",    nullptr,   "~*1,V",          "FIU,I",         EShLangAll },
 
         { "Gather",             /*!O*/        "V4",    nullptr,   "%@,S,V",         "FIU,S,F",       EShLangAll },
         { "Gather",             /* O*/        "V4",    nullptr,   "%@,S,V,V",       "FIU,S,F,I",     EShLangAll },