Implement atomic ops, bit conversions, fix fwidth stage mask, fix saturate dest modifier.
authorLoopDawg <nospam@nowhere.net>
Mon, 13 Jun 2016 15:22:28 +0000 (09:22 -0600)
committerLoopDawg <nospam@nowhere.net>
Tue, 14 Jun 2016 02:50:36 +0000 (20:50 -0600)
16 files changed:
Test/baseResults/hlsl.intrinsics.comp.out [new file with mode: 0644]
Test/baseResults/hlsl.intrinsics.frag.out
Test/baseResults/hlsl.intrinsics.negative.comp.out [new file with mode: 0644]
Test/baseResults/hlsl.intrinsics.negative.vert.out
Test/baseResults/hlsl.intrinsics.vert.out
Test/hlsl.intrinsics.comp [new file with mode: 0644]
Test/hlsl.intrinsics.frag
Test/hlsl.intrinsics.negative.comp [new file with mode: 0644]
Test/hlsl.intrinsics.negative.frag
Test/hlsl.intrinsics.negative.vert
Test/hlsl.intrinsics.vert
glslang/Include/intermediate.h
gtests/Hlsl.FromFile.cpp
hlsl/hlslParseHelper.cpp
hlsl/hlslParseHelper.h
hlsl/hlslParseables.cpp

diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out
new file mode 100644 (file)
index 0000000..63e90e8
--- /dev/null
@@ -0,0 +1,768 @@
+hlsl.intrinsics.comp
+Shader version: 450
+local_size = (1, 1, 1)
+0:? Sequence
+0:44  Function Definition: ComputeShaderFunction(f1;f1;f1;u1;u1; (temp float)
+0:17    Function Parameters: 
+0:17      'inF0' (temp float)
+0:17      'inF1' (temp float)
+0:17      'inF2' (temp float)
+0:17      'inU0' (temp uint)
+0:17      'inU1' (temp uint)
+0:?     Sequence
+0:21      all (global bool)
+0:21        'inF0' (temp float)
+0:24      AtomicAdd (global void)
+0:24        'gs_ua' (temp uint)
+0:24        'gs_ub' (temp uint)
+0:25      move second child to first child (temp uint)
+0:25        'out_u1' (temp uint)
+0:25        AtomicAdd (temp uint)
+0:25          'gs_ua' (temp uint)
+0:25          'gs_ub' (temp uint)
+0:26      AtomicAnd (global void)
+0:26        'gs_ua' (temp uint)
+0:26        'gs_ub' (temp uint)
+0:27      move second child to first child (temp uint)
+0:27        'out_u1' (temp uint)
+0:27        AtomicAnd (temp uint)
+0:27          'gs_ua' (temp uint)
+0:27          'gs_ub' (temp uint)
+0:28      move second child to first child (temp uint)
+0:28        'out_u1' (temp uint)
+0:28        AtomicCompSwap (temp uint)
+0:28          'gs_ua' (temp uint)
+0:28          'gs_ub' (temp uint)
+0:28          'gs_uc' (temp uint)
+0:29      move second child to first child (temp uint)
+0:29        'out_u1' (temp uint)
+0:29        AtomicExchange (temp uint)
+0:29          'gs_ua' (temp uint)
+0:29          'gs_ub' (temp uint)
+0:30      AtomicMax (global void)
+0:30        'gs_ua' (temp uint)
+0:30        'gs_ub' (temp uint)
+0:31      move second child to first child (temp uint)
+0:31        'out_u1' (temp uint)
+0:31        AtomicMax (temp uint)
+0:31          'gs_ua' (temp uint)
+0:31          'gs_ub' (temp uint)
+0:32      AtomicMin (global void)
+0:32        'gs_ua' (temp uint)
+0:32        'gs_ub' (temp uint)
+0:33      move second child to first child (temp uint)
+0:33        'out_u1' (temp uint)
+0:33        AtomicMin (temp uint)
+0:33          'gs_ua' (temp uint)
+0:33          'gs_ub' (temp uint)
+0:34      AtomicOr (global void)
+0:34        'gs_ua' (temp uint)
+0:34        'gs_ub' (temp uint)
+0:35      move second child to first child (temp uint)
+0:35        'out_u1' (temp uint)
+0:35        AtomicOr (temp uint)
+0:35          'gs_ua' (temp uint)
+0:35          'gs_ub' (temp uint)
+0:36      AtomicXor (global void)
+0:36        'gs_ua' (temp uint)
+0:36        'gs_ub' (temp uint)
+0:37      move second child to first child (temp uint)
+0:37        'out_u1' (temp uint)
+0:37        AtomicXor (temp uint)
+0:37          'gs_ua' (temp uint)
+0:37          'gs_ub' (temp uint)
+0:41      Branch: Return with expression
+0:41        Constant:
+0:41          0.000000
+0:50  Function Definition: ComputeShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
+0:45    Function Parameters: 
+0:45      'inF0' (temp 1-component vector of float)
+0:45      'inF1' (temp 1-component vector of float)
+0:45      'inF2' (temp 1-component vector of float)
+0:?     Sequence
+0:47      Branch: Return with expression
+0:47        Constant:
+0:47          0.000000
+0:77  Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
+0:51    Function Parameters: 
+0:51      'inF0' (temp 2-component vector of float)
+0:51      'inF1' (temp 2-component vector of float)
+0:51      'inF2' (temp 2-component vector of float)
+0:51      'inU0' (temp 2-component vector of uint)
+0:51      'inU1' (temp 2-component vector of uint)
+0:?     Sequence
+0:55      all (global bool)
+0:55        'inF0' (temp 2-component vector of float)
+0:58      AtomicAdd (global void)
+0:58        'gs_ua2' (temp 2-component vector of uint)
+0:58        'gs_ub2' (temp 2-component vector of uint)
+0:59      move second child to first child (temp 2-component vector of uint)
+0:59        'out_u2' (temp 2-component vector of uint)
+0:59        AtomicAdd (temp 2-component vector of uint)
+0:59          'gs_ua2' (temp 2-component vector of uint)
+0:59          'gs_ub2' (temp 2-component vector of uint)
+0:60      AtomicAnd (global void)
+0:60        'gs_ua2' (temp 2-component vector of uint)
+0:60        'gs_ub2' (temp 2-component vector of uint)
+0:61      move second child to first child (temp 2-component vector of uint)
+0:61        'out_u2' (temp 2-component vector of uint)
+0:61        AtomicAnd (temp 2-component vector of uint)
+0:61          'gs_ua2' (temp 2-component vector of uint)
+0:61          'gs_ub2' (temp 2-component vector of uint)
+0:62      move second child to first child (temp 2-component vector of uint)
+0:62        'out_u2' (temp 2-component vector of uint)
+0:62        AtomicCompSwap (temp 2-component vector of uint)
+0:62          'gs_ua2' (temp 2-component vector of uint)
+0:62          'gs_ub2' (temp 2-component vector of uint)
+0:62          'gs_uc2' (temp 2-component vector of uint)
+0:63      move second child to first child (temp 2-component vector of uint)
+0:63        'out_u2' (temp 2-component vector of uint)
+0:63        AtomicExchange (temp 2-component vector of uint)
+0:63          'gs_ua2' (temp 2-component vector of uint)
+0:63          'gs_ub2' (temp 2-component vector of uint)
+0:64      AtomicMax (global void)
+0:64        'gs_ua2' (temp 2-component vector of uint)
+0:64        'gs_ub2' (temp 2-component vector of uint)
+0:65      move second child to first child (temp 2-component vector of uint)
+0:65        'out_u2' (temp 2-component vector of uint)
+0:65        AtomicMax (temp 2-component vector of uint)
+0:65          'gs_ua2' (temp 2-component vector of uint)
+0:65          'gs_ub2' (temp 2-component vector of uint)
+0:66      AtomicMin (global void)
+0:66        'gs_ua2' (temp 2-component vector of uint)
+0:66        'gs_ub2' (temp 2-component vector of uint)
+0:67      move second child to first child (temp 2-component vector of uint)
+0:67        'out_u2' (temp 2-component vector of uint)
+0:67        AtomicMin (temp 2-component vector of uint)
+0:67          'gs_ua2' (temp 2-component vector of uint)
+0:67          'gs_ub2' (temp 2-component vector of uint)
+0:68      AtomicOr (global void)
+0:68        'gs_ua2' (temp 2-component vector of uint)
+0:68        'gs_ub2' (temp 2-component vector of uint)
+0:69      move second child to first child (temp 2-component vector of uint)
+0:69        'out_u2' (temp 2-component vector of uint)
+0:69        AtomicOr (temp 2-component vector of uint)
+0:69          'gs_ua2' (temp 2-component vector of uint)
+0:69          'gs_ub2' (temp 2-component vector of uint)
+0:70      AtomicXor (global void)
+0:70        'gs_ua2' (temp 2-component vector of uint)
+0:70        'gs_ub2' (temp 2-component vector of uint)
+0:71      move second child to first child (temp 2-component vector of uint)
+0:71        'out_u2' (temp 2-component vector of uint)
+0:71        AtomicXor (temp 2-component vector of uint)
+0:71          'gs_ua2' (temp 2-component vector of uint)
+0:71          'gs_ub2' (temp 2-component vector of uint)
+0:74      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:104  Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
+0:78    Function Parameters: 
+0:78      'inF0' (temp 3-component vector of float)
+0:78      'inF1' (temp 3-component vector of float)
+0:78      'inF2' (temp 3-component vector of float)
+0:78      'inU0' (temp 3-component vector of uint)
+0:78      'inU1' (temp 3-component vector of uint)
+0:?     Sequence
+0:82      all (global bool)
+0:82        'inF0' (temp 3-component vector of float)
+0:85      AtomicAdd (global void)
+0:85        'gs_ua3' (temp 3-component vector of uint)
+0:85        'gs_ub3' (temp 3-component vector of uint)
+0:86      move second child to first child (temp 3-component vector of uint)
+0:86        'out_u3' (temp 3-component vector of uint)
+0:86        AtomicAdd (temp 3-component vector of uint)
+0:86          'gs_ua3' (temp 3-component vector of uint)
+0:86          'gs_ub3' (temp 3-component vector of uint)
+0:87      AtomicAnd (global void)
+0:87        'gs_ua3' (temp 3-component vector of uint)
+0:87        'gs_ub3' (temp 3-component vector of uint)
+0:88      move second child to first child (temp 3-component vector of uint)
+0:88        'out_u3' (temp 3-component vector of uint)
+0:88        AtomicAnd (temp 3-component vector of uint)
+0:88          'gs_ua3' (temp 3-component vector of uint)
+0:88          'gs_ub3' (temp 3-component vector of uint)
+0:89      move second child to first child (temp 3-component vector of uint)
+0:89        'out_u3' (temp 3-component vector of uint)
+0:89        AtomicCompSwap (temp 3-component vector of uint)
+0:89          'gs_ua3' (temp 3-component vector of uint)
+0:89          'gs_ub3' (temp 3-component vector of uint)
+0:89          'gs_uc3' (temp 3-component vector of uint)
+0:90      move second child to first child (temp 3-component vector of uint)
+0:90        'out_u3' (temp 3-component vector of uint)
+0:90        AtomicExchange (temp 3-component vector of uint)
+0:90          'gs_ua3' (temp 3-component vector of uint)
+0:90          'gs_ub3' (temp 3-component vector of uint)
+0:91      AtomicMax (global void)
+0:91        'gs_ua3' (temp 3-component vector of uint)
+0:91        'gs_ub3' (temp 3-component vector of uint)
+0:92      move second child to first child (temp 3-component vector of uint)
+0:92        'out_u3' (temp 3-component vector of uint)
+0:92        AtomicMax (temp 3-component vector of uint)
+0:92          'gs_ua3' (temp 3-component vector of uint)
+0:92          'gs_ub3' (temp 3-component vector of uint)
+0:93      AtomicMin (global void)
+0:93        'gs_ua3' (temp 3-component vector of uint)
+0:93        'gs_ub3' (temp 3-component vector of uint)
+0:94      move second child to first child (temp 3-component vector of uint)
+0:94        'out_u3' (temp 3-component vector of uint)
+0:94        AtomicMin (temp 3-component vector of uint)
+0:94          'gs_ua3' (temp 3-component vector of uint)
+0:94          'gs_ub3' (temp 3-component vector of uint)
+0:95      AtomicOr (global void)
+0:95        'gs_ua3' (temp 3-component vector of uint)
+0:95        'gs_ub3' (temp 3-component vector of uint)
+0:96      move second child to first child (temp 3-component vector of uint)
+0:96        'out_u3' (temp 3-component vector of uint)
+0:96        AtomicOr (temp 3-component vector of uint)
+0:96          'gs_ua3' (temp 3-component vector of uint)
+0:96          'gs_ub3' (temp 3-component vector of uint)
+0:97      AtomicXor (global void)
+0:97        'gs_ua3' (temp 3-component vector of uint)
+0:97        'gs_ub3' (temp 3-component vector of uint)
+0:98      move second child to first child (temp 3-component vector of uint)
+0:98        'out_u3' (temp 3-component vector of uint)
+0:98        AtomicXor (temp 3-component vector of uint)
+0:98          'gs_ua3' (temp 3-component vector of uint)
+0:98          'gs_ub3' (temp 3-component vector of uint)
+0:101      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:130  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
+0:105    Function Parameters: 
+0:105      'inF0' (temp 4-component vector of float)
+0:105      'inF1' (temp 4-component vector of float)
+0:105      'inF2' (temp 4-component vector of float)
+0:105      'inU0' (temp 4-component vector of uint)
+0:105      'inU1' (temp 4-component vector of uint)
+0:?     Sequence
+0:109      all (global bool)
+0:109        'inF0' (temp 4-component vector of float)
+0:112      AtomicAdd (global void)
+0:112        'gs_ua4' (temp 4-component vector of uint)
+0:112        'gs_ub4' (temp 4-component vector of uint)
+0:113      move second child to first child (temp 4-component vector of uint)
+0:113        'out_u4' (temp 4-component vector of uint)
+0:113        AtomicAdd (temp 4-component vector of uint)
+0:113          'gs_ua4' (temp 4-component vector of uint)
+0:113          'gs_ub4' (temp 4-component vector of uint)
+0:114      AtomicAnd (global void)
+0:114        'gs_ua4' (temp 4-component vector of uint)
+0:114        'gs_ub4' (temp 4-component vector of uint)
+0:115      move second child to first child (temp 4-component vector of uint)
+0:115        'out_u4' (temp 4-component vector of uint)
+0:115        AtomicAnd (temp 4-component vector of uint)
+0:115          'gs_ua4' (temp 4-component vector of uint)
+0:115          'gs_ub4' (temp 4-component vector of uint)
+0:116      move second child to first child (temp 4-component vector of uint)
+0:116        'out_u4' (temp 4-component vector of uint)
+0:116        AtomicCompSwap (temp 4-component vector of uint)
+0:116          'gs_ua4' (temp 4-component vector of uint)
+0:116          'gs_ub4' (temp 4-component vector of uint)
+0:116          'gs_uc4' (temp 4-component vector of uint)
+0:117      move second child to first child (temp 4-component vector of uint)
+0:117        'out_u4' (temp 4-component vector of uint)
+0:117        AtomicExchange (temp 4-component vector of uint)
+0:117          'gs_ua4' (temp 4-component vector of uint)
+0:117          'gs_ub4' (temp 4-component vector of uint)
+0:118      AtomicMax (global void)
+0:118        'gs_ua4' (temp 4-component vector of uint)
+0:118        'gs_ub4' (temp 4-component vector of uint)
+0:119      move second child to first child (temp 4-component vector of uint)
+0:119        'out_u4' (temp 4-component vector of uint)
+0:119        AtomicMax (temp 4-component vector of uint)
+0:119          'gs_ua4' (temp 4-component vector of uint)
+0:119          'gs_ub4' (temp 4-component vector of uint)
+0:120      AtomicMin (global void)
+0:120        'gs_ua4' (temp 4-component vector of uint)
+0:120        'gs_ub4' (temp 4-component vector of uint)
+0:121      move second child to first child (temp 4-component vector of uint)
+0:121        'out_u4' (temp 4-component vector of uint)
+0:121        AtomicMin (temp 4-component vector of uint)
+0:121          'gs_ua4' (temp 4-component vector of uint)
+0:121          'gs_ub4' (temp 4-component vector of uint)
+0:122      AtomicOr (global void)
+0:122        'gs_ua4' (temp 4-component vector of uint)
+0:122        'gs_ub4' (temp 4-component vector of uint)
+0:123      move second child to first child (temp 4-component vector of uint)
+0:123        'out_u4' (temp 4-component vector of uint)
+0:123        AtomicOr (temp 4-component vector of uint)
+0:123          'gs_ua4' (temp 4-component vector of uint)
+0:123          'gs_ub4' (temp 4-component vector of uint)
+0:124      AtomicXor (global void)
+0:124        'gs_ua4' (temp 4-component vector of uint)
+0:124        'gs_ub4' (temp 4-component vector of uint)
+0:125      move second child to first child (temp 4-component vector of uint)
+0:125        'out_u4' (temp 4-component vector of uint)
+0:125        AtomicXor (temp 4-component vector of uint)
+0:125          'gs_ua4' (temp 4-component vector of uint)
+0:125          'gs_ub4' (temp 4-component vector of uint)
+0:128      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:?           4.000000
+0:?   Linker Objects
+0:?     'gs_ua' (temp uint)
+0:?     'gs_ub' (temp uint)
+0:?     'gs_uc' (temp uint)
+0:?     'gs_ua2' (temp 2-component vector of uint)
+0:?     'gs_ub2' (temp 2-component vector of uint)
+0:?     'gs_uc2' (temp 2-component vector of uint)
+0:?     'gs_ua3' (temp 3-component vector of uint)
+0:?     'gs_ub3' (temp 3-component vector of uint)
+0:?     'gs_uc3' (temp 3-component vector of uint)
+0:?     'gs_ua4' (temp 4-component vector of uint)
+0:?     'gs_ub4' (temp 4-component vector of uint)
+0:?     'gs_uc4' (temp 4-component vector of uint)
+
+
+Linked compute stage:
+
+
+Shader version: 450
+local_size = (1, 1, 1)
+0:? Sequence
+0:44  Function Definition: ComputeShaderFunction(f1;f1;f1;u1;u1; (temp float)
+0:17    Function Parameters: 
+0:17      'inF0' (temp float)
+0:17      'inF1' (temp float)
+0:17      'inF2' (temp float)
+0:17      'inU0' (temp uint)
+0:17      'inU1' (temp uint)
+0:?     Sequence
+0:21      all (global bool)
+0:21        'inF0' (temp float)
+0:24      AtomicAdd (global void)
+0:24        'gs_ua' (temp uint)
+0:24        'gs_ub' (temp uint)
+0:25      move second child to first child (temp uint)
+0:25        'out_u1' (temp uint)
+0:25        AtomicAdd (temp uint)
+0:25          'gs_ua' (temp uint)
+0:25          'gs_ub' (temp uint)
+0:26      AtomicAnd (global void)
+0:26        'gs_ua' (temp uint)
+0:26        'gs_ub' (temp uint)
+0:27      move second child to first child (temp uint)
+0:27        'out_u1' (temp uint)
+0:27        AtomicAnd (temp uint)
+0:27          'gs_ua' (temp uint)
+0:27          'gs_ub' (temp uint)
+0:28      move second child to first child (temp uint)
+0:28        'out_u1' (temp uint)
+0:28        AtomicCompSwap (temp uint)
+0:28          'gs_ua' (temp uint)
+0:28          'gs_ub' (temp uint)
+0:28          'gs_uc' (temp uint)
+0:29      move second child to first child (temp uint)
+0:29        'out_u1' (temp uint)
+0:29        AtomicExchange (temp uint)
+0:29          'gs_ua' (temp uint)
+0:29          'gs_ub' (temp uint)
+0:30      AtomicMax (global void)
+0:30        'gs_ua' (temp uint)
+0:30        'gs_ub' (temp uint)
+0:31      move second child to first child (temp uint)
+0:31        'out_u1' (temp uint)
+0:31        AtomicMax (temp uint)
+0:31          'gs_ua' (temp uint)
+0:31          'gs_ub' (temp uint)
+0:32      AtomicMin (global void)
+0:32        'gs_ua' (temp uint)
+0:32        'gs_ub' (temp uint)
+0:33      move second child to first child (temp uint)
+0:33        'out_u1' (temp uint)
+0:33        AtomicMin (temp uint)
+0:33          'gs_ua' (temp uint)
+0:33          'gs_ub' (temp uint)
+0:34      AtomicOr (global void)
+0:34        'gs_ua' (temp uint)
+0:34        'gs_ub' (temp uint)
+0:35      move second child to first child (temp uint)
+0:35        'out_u1' (temp uint)
+0:35        AtomicOr (temp uint)
+0:35          'gs_ua' (temp uint)
+0:35          'gs_ub' (temp uint)
+0:36      AtomicXor (global void)
+0:36        'gs_ua' (temp uint)
+0:36        'gs_ub' (temp uint)
+0:37      move second child to first child (temp uint)
+0:37        'out_u1' (temp uint)
+0:37        AtomicXor (temp uint)
+0:37          'gs_ua' (temp uint)
+0:37          'gs_ub' (temp uint)
+0:41      Branch: Return with expression
+0:41        Constant:
+0:41          0.000000
+0:50  Function Definition: ComputeShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
+0:45    Function Parameters: 
+0:45      'inF0' (temp 1-component vector of float)
+0:45      'inF1' (temp 1-component vector of float)
+0:45      'inF2' (temp 1-component vector of float)
+0:?     Sequence
+0:47      Branch: Return with expression
+0:47        Constant:
+0:47          0.000000
+0:77  Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
+0:51    Function Parameters: 
+0:51      'inF0' (temp 2-component vector of float)
+0:51      'inF1' (temp 2-component vector of float)
+0:51      'inF2' (temp 2-component vector of float)
+0:51      'inU0' (temp 2-component vector of uint)
+0:51      'inU1' (temp 2-component vector of uint)
+0:?     Sequence
+0:55      all (global bool)
+0:55        'inF0' (temp 2-component vector of float)
+0:58      AtomicAdd (global void)
+0:58        'gs_ua2' (temp 2-component vector of uint)
+0:58        'gs_ub2' (temp 2-component vector of uint)
+0:59      move second child to first child (temp 2-component vector of uint)
+0:59        'out_u2' (temp 2-component vector of uint)
+0:59        AtomicAdd (temp 2-component vector of uint)
+0:59          'gs_ua2' (temp 2-component vector of uint)
+0:59          'gs_ub2' (temp 2-component vector of uint)
+0:60      AtomicAnd (global void)
+0:60        'gs_ua2' (temp 2-component vector of uint)
+0:60        'gs_ub2' (temp 2-component vector of uint)
+0:61      move second child to first child (temp 2-component vector of uint)
+0:61        'out_u2' (temp 2-component vector of uint)
+0:61        AtomicAnd (temp 2-component vector of uint)
+0:61          'gs_ua2' (temp 2-component vector of uint)
+0:61          'gs_ub2' (temp 2-component vector of uint)
+0:62      move second child to first child (temp 2-component vector of uint)
+0:62        'out_u2' (temp 2-component vector of uint)
+0:62        AtomicCompSwap (temp 2-component vector of uint)
+0:62          'gs_ua2' (temp 2-component vector of uint)
+0:62          'gs_ub2' (temp 2-component vector of uint)
+0:62          'gs_uc2' (temp 2-component vector of uint)
+0:63      move second child to first child (temp 2-component vector of uint)
+0:63        'out_u2' (temp 2-component vector of uint)
+0:63        AtomicExchange (temp 2-component vector of uint)
+0:63          'gs_ua2' (temp 2-component vector of uint)
+0:63          'gs_ub2' (temp 2-component vector of uint)
+0:64      AtomicMax (global void)
+0:64        'gs_ua2' (temp 2-component vector of uint)
+0:64        'gs_ub2' (temp 2-component vector of uint)
+0:65      move second child to first child (temp 2-component vector of uint)
+0:65        'out_u2' (temp 2-component vector of uint)
+0:65        AtomicMax (temp 2-component vector of uint)
+0:65          'gs_ua2' (temp 2-component vector of uint)
+0:65          'gs_ub2' (temp 2-component vector of uint)
+0:66      AtomicMin (global void)
+0:66        'gs_ua2' (temp 2-component vector of uint)
+0:66        'gs_ub2' (temp 2-component vector of uint)
+0:67      move second child to first child (temp 2-component vector of uint)
+0:67        'out_u2' (temp 2-component vector of uint)
+0:67        AtomicMin (temp 2-component vector of uint)
+0:67          'gs_ua2' (temp 2-component vector of uint)
+0:67          'gs_ub2' (temp 2-component vector of uint)
+0:68      AtomicOr (global void)
+0:68        'gs_ua2' (temp 2-component vector of uint)
+0:68        'gs_ub2' (temp 2-component vector of uint)
+0:69      move second child to first child (temp 2-component vector of uint)
+0:69        'out_u2' (temp 2-component vector of uint)
+0:69        AtomicOr (temp 2-component vector of uint)
+0:69          'gs_ua2' (temp 2-component vector of uint)
+0:69          'gs_ub2' (temp 2-component vector of uint)
+0:70      AtomicXor (global void)
+0:70        'gs_ua2' (temp 2-component vector of uint)
+0:70        'gs_ub2' (temp 2-component vector of uint)
+0:71      move second child to first child (temp 2-component vector of uint)
+0:71        'out_u2' (temp 2-component vector of uint)
+0:71        AtomicXor (temp 2-component vector of uint)
+0:71          'gs_ua2' (temp 2-component vector of uint)
+0:71          'gs_ub2' (temp 2-component vector of uint)
+0:74      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:104  Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
+0:78    Function Parameters: 
+0:78      'inF0' (temp 3-component vector of float)
+0:78      'inF1' (temp 3-component vector of float)
+0:78      'inF2' (temp 3-component vector of float)
+0:78      'inU0' (temp 3-component vector of uint)
+0:78      'inU1' (temp 3-component vector of uint)
+0:?     Sequence
+0:82      all (global bool)
+0:82        'inF0' (temp 3-component vector of float)
+0:85      AtomicAdd (global void)
+0:85        'gs_ua3' (temp 3-component vector of uint)
+0:85        'gs_ub3' (temp 3-component vector of uint)
+0:86      move second child to first child (temp 3-component vector of uint)
+0:86        'out_u3' (temp 3-component vector of uint)
+0:86        AtomicAdd (temp 3-component vector of uint)
+0:86          'gs_ua3' (temp 3-component vector of uint)
+0:86          'gs_ub3' (temp 3-component vector of uint)
+0:87      AtomicAnd (global void)
+0:87        'gs_ua3' (temp 3-component vector of uint)
+0:87        'gs_ub3' (temp 3-component vector of uint)
+0:88      move second child to first child (temp 3-component vector of uint)
+0:88        'out_u3' (temp 3-component vector of uint)
+0:88        AtomicAnd (temp 3-component vector of uint)
+0:88          'gs_ua3' (temp 3-component vector of uint)
+0:88          'gs_ub3' (temp 3-component vector of uint)
+0:89      move second child to first child (temp 3-component vector of uint)
+0:89        'out_u3' (temp 3-component vector of uint)
+0:89        AtomicCompSwap (temp 3-component vector of uint)
+0:89          'gs_ua3' (temp 3-component vector of uint)
+0:89          'gs_ub3' (temp 3-component vector of uint)
+0:89          'gs_uc3' (temp 3-component vector of uint)
+0:90      move second child to first child (temp 3-component vector of uint)
+0:90        'out_u3' (temp 3-component vector of uint)
+0:90        AtomicExchange (temp 3-component vector of uint)
+0:90          'gs_ua3' (temp 3-component vector of uint)
+0:90          'gs_ub3' (temp 3-component vector of uint)
+0:91      AtomicMax (global void)
+0:91        'gs_ua3' (temp 3-component vector of uint)
+0:91        'gs_ub3' (temp 3-component vector of uint)
+0:92      move second child to first child (temp 3-component vector of uint)
+0:92        'out_u3' (temp 3-component vector of uint)
+0:92        AtomicMax (temp 3-component vector of uint)
+0:92          'gs_ua3' (temp 3-component vector of uint)
+0:92          'gs_ub3' (temp 3-component vector of uint)
+0:93      AtomicMin (global void)
+0:93        'gs_ua3' (temp 3-component vector of uint)
+0:93        'gs_ub3' (temp 3-component vector of uint)
+0:94      move second child to first child (temp 3-component vector of uint)
+0:94        'out_u3' (temp 3-component vector of uint)
+0:94        AtomicMin (temp 3-component vector of uint)
+0:94          'gs_ua3' (temp 3-component vector of uint)
+0:94          'gs_ub3' (temp 3-component vector of uint)
+0:95      AtomicOr (global void)
+0:95        'gs_ua3' (temp 3-component vector of uint)
+0:95        'gs_ub3' (temp 3-component vector of uint)
+0:96      move second child to first child (temp 3-component vector of uint)
+0:96        'out_u3' (temp 3-component vector of uint)
+0:96        AtomicOr (temp 3-component vector of uint)
+0:96          'gs_ua3' (temp 3-component vector of uint)
+0:96          'gs_ub3' (temp 3-component vector of uint)
+0:97      AtomicXor (global void)
+0:97        'gs_ua3' (temp 3-component vector of uint)
+0:97        'gs_ub3' (temp 3-component vector of uint)
+0:98      move second child to first child (temp 3-component vector of uint)
+0:98        'out_u3' (temp 3-component vector of uint)
+0:98        AtomicXor (temp 3-component vector of uint)
+0:98          'gs_ua3' (temp 3-component vector of uint)
+0:98          'gs_ub3' (temp 3-component vector of uint)
+0:101      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:130  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
+0:105    Function Parameters: 
+0:105      'inF0' (temp 4-component vector of float)
+0:105      'inF1' (temp 4-component vector of float)
+0:105      'inF2' (temp 4-component vector of float)
+0:105      'inU0' (temp 4-component vector of uint)
+0:105      'inU1' (temp 4-component vector of uint)
+0:?     Sequence
+0:109      all (global bool)
+0:109        'inF0' (temp 4-component vector of float)
+0:112      AtomicAdd (global void)
+0:112        'gs_ua4' (temp 4-component vector of uint)
+0:112        'gs_ub4' (temp 4-component vector of uint)
+0:113      move second child to first child (temp 4-component vector of uint)
+0:113        'out_u4' (temp 4-component vector of uint)
+0:113        AtomicAdd (temp 4-component vector of uint)
+0:113          'gs_ua4' (temp 4-component vector of uint)
+0:113          'gs_ub4' (temp 4-component vector of uint)
+0:114      AtomicAnd (global void)
+0:114        'gs_ua4' (temp 4-component vector of uint)
+0:114        'gs_ub4' (temp 4-component vector of uint)
+0:115      move second child to first child (temp 4-component vector of uint)
+0:115        'out_u4' (temp 4-component vector of uint)
+0:115        AtomicAnd (temp 4-component vector of uint)
+0:115          'gs_ua4' (temp 4-component vector of uint)
+0:115          'gs_ub4' (temp 4-component vector of uint)
+0:116      move second child to first child (temp 4-component vector of uint)
+0:116        'out_u4' (temp 4-component vector of uint)
+0:116        AtomicCompSwap (temp 4-component vector of uint)
+0:116          'gs_ua4' (temp 4-component vector of uint)
+0:116          'gs_ub4' (temp 4-component vector of uint)
+0:116          'gs_uc4' (temp 4-component vector of uint)
+0:117      move second child to first child (temp 4-component vector of uint)
+0:117        'out_u4' (temp 4-component vector of uint)
+0:117        AtomicExchange (temp 4-component vector of uint)
+0:117          'gs_ua4' (temp 4-component vector of uint)
+0:117          'gs_ub4' (temp 4-component vector of uint)
+0:118      AtomicMax (global void)
+0:118        'gs_ua4' (temp 4-component vector of uint)
+0:118        'gs_ub4' (temp 4-component vector of uint)
+0:119      move second child to first child (temp 4-component vector of uint)
+0:119        'out_u4' (temp 4-component vector of uint)
+0:119        AtomicMax (temp 4-component vector of uint)
+0:119          'gs_ua4' (temp 4-component vector of uint)
+0:119          'gs_ub4' (temp 4-component vector of uint)
+0:120      AtomicMin (global void)
+0:120        'gs_ua4' (temp 4-component vector of uint)
+0:120        'gs_ub4' (temp 4-component vector of uint)
+0:121      move second child to first child (temp 4-component vector of uint)
+0:121        'out_u4' (temp 4-component vector of uint)
+0:121        AtomicMin (temp 4-component vector of uint)
+0:121          'gs_ua4' (temp 4-component vector of uint)
+0:121          'gs_ub4' (temp 4-component vector of uint)
+0:122      AtomicOr (global void)
+0:122        'gs_ua4' (temp 4-component vector of uint)
+0:122        'gs_ub4' (temp 4-component vector of uint)
+0:123      move second child to first child (temp 4-component vector of uint)
+0:123        'out_u4' (temp 4-component vector of uint)
+0:123        AtomicOr (temp 4-component vector of uint)
+0:123          'gs_ua4' (temp 4-component vector of uint)
+0:123          'gs_ub4' (temp 4-component vector of uint)
+0:124      AtomicXor (global void)
+0:124        'gs_ua4' (temp 4-component vector of uint)
+0:124        'gs_ub4' (temp 4-component vector of uint)
+0:125      move second child to first child (temp 4-component vector of uint)
+0:125        'out_u4' (temp 4-component vector of uint)
+0:125        AtomicXor (temp 4-component vector of uint)
+0:125          'gs_ua4' (temp 4-component vector of uint)
+0:125          'gs_ub4' (temp 4-component vector of uint)
+0:128      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:?           4.000000
+0:?   Linker Objects
+0:?     'gs_ua' (temp uint)
+0:?     'gs_ub' (temp uint)
+0:?     'gs_uc' (temp uint)
+0:?     'gs_ua2' (temp 2-component vector of uint)
+0:?     'gs_ub2' (temp 2-component vector of uint)
+0:?     'gs_uc2' (temp 2-component vector of uint)
+0:?     'gs_ua3' (temp 3-component vector of uint)
+0:?     'gs_ub3' (temp 3-component vector of uint)
+0:?     'gs_uc3' (temp 3-component vector of uint)
+0:?     'gs_ua4' (temp 4-component vector of uint)
+0:?     'gs_ub4' (temp 4-component vector of uint)
+0:?     'gs_uc4' (temp 4-component vector of uint)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 182
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "ComputeShaderFunction"
+                              ExecutionMode 4 LocalSize 1 1 1
+                              Source HLSL 450
+                              Name 4  "ComputeShaderFunction"
+                              Name 8  "inF0"
+                              Name 14  "gs_ua"
+                              Name 15  "gs_ub"
+                              Name 20  "out_u1"
+                              Name 28  "gs_uc"
+                              Name 54  "inF0"
+                              Name 59  "gs_ua2"
+                              Name 60  "gs_ub2"
+                              Name 63  "out_u2"
+                              Name 71  "gs_uc2"
+                              Name 98  "inF0"
+                              Name 103  "gs_ua3"
+                              Name 104  "gs_ub3"
+                              Name 107  "out_u3"
+                              Name 115  "gs_uc3"
+                              Name 141  "inF0"
+                              Name 146  "gs_ua4"
+                              Name 147  "gs_ub4"
+                              Name 150  "out_u4"
+                              Name 158  "gs_uc4"
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+              10:             TypeBool
+              12:             TypeInt 32 0
+              13:             TypePointer Function 12(int)
+              17:     12(int) Constant 1
+              18:     12(int) Constant 0
+              49:    6(float) Constant 0
+              52:             TypeVector 6(float) 2
+              53:             TypePointer Function 52(fvec2)
+              57:             TypeVector 12(int) 2
+              58:             TypePointer Function 57(ivec2)
+              92:    6(float) Constant 1065353216
+              93:    6(float) Constant 1073741824
+              94:   52(fvec2) ConstantComposite 92 93
+              96:             TypeVector 6(float) 3
+              97:             TypePointer Function 96(fvec3)
+             101:             TypeVector 12(int) 3
+             102:             TypePointer Function 101(ivec3)
+             136:    6(float) Constant 1077936128
+             137:   96(fvec3) ConstantComposite 92 93 136
+             139:             TypeVector 6(float) 4
+             140:             TypePointer Function 139(fvec4)
+             144:             TypeVector 12(int) 4
+             145:             TypePointer Function 144(ivec4)
+             179:    6(float) Constant 1082130432
+             180:  139(fvec4) ConstantComposite 92 93 136 179
+4(ComputeShaderFunction):           2 Function None 3
+               5:             Label
+         8(inF0):      7(ptr) Variable Function
+       14(gs_ua):     13(ptr) Variable Function
+       15(gs_ub):     13(ptr) Variable Function
+      20(out_u1):     13(ptr) Variable Function
+       28(gs_uc):     13(ptr) Variable Function
+        54(inF0):     53(ptr) Variable Function
+      59(gs_ua2):     58(ptr) Variable Function
+      60(gs_ub2):     58(ptr) Variable Function
+      63(out_u2):     58(ptr) Variable Function
+      71(gs_uc2):     58(ptr) Variable Function
+        98(inF0):     97(ptr) Variable Function
+     103(gs_ua3):    102(ptr) Variable Function
+     104(gs_ub3):    102(ptr) Variable Function
+     107(out_u3):    102(ptr) Variable Function
+     115(gs_uc3):    102(ptr) Variable Function
+       141(inF0):    140(ptr) Variable Function
+     146(gs_ua4):    145(ptr) Variable Function
+     147(gs_ub4):    145(ptr) Variable Function
+     150(out_u4):    145(ptr) Variable Function
+     158(gs_uc4):    145(ptr) Variable Function
+               9:    6(float) Load 8(inF0)
+              11:    10(bool) All 9
+              16:     12(int) Load 15(gs_ub)
+              19:           2 AtomicIAdd 14(gs_ua) 17 18 16
+              21:     12(int) Load 15(gs_ub)
+              22:     12(int) AtomicIAdd 14(gs_ua) 17 18 21
+                              Store 20(out_u1) 22
+              23:     12(int) Load 15(gs_ub)
+              24:           2 AtomicAnd 14(gs_ua) 17 18 23
+              25:     12(int) Load 15(gs_ub)
+              26:     12(int) AtomicAnd 14(gs_ua) 17 18 25
+                              Store 20(out_u1) 26
+              27:     12(int) Load 15(gs_ub)
+              29:     12(int) Load 28(gs_uc)
+              30:     12(int) AtomicCompareExchange 14(gs_ua) 17 18 18 29 27
+                              Store 20(out_u1) 30
+              31:     12(int) Load 15(gs_ub)
+              32:     12(int) AtomicExchange 14(gs_ua) 17 18 31
+                              Store 20(out_u1) 32
+              33:     12(int) Load 15(gs_ub)
+              34:           2 AtomicSMax 14(gs_ua) 17 18 33
+              35:     12(int) Load 15(gs_ub)
+              36:     12(int) AtomicUMax 14(gs_ua) 17 18 35
+                              Store 20(out_u1) 36
+              37:     12(int) Load 15(gs_ub)
+              38:           2 AtomicSMin 14(gs_ua) 17 18 37
+              39:     12(int) Load 15(gs_ub)
+              40:     12(int) AtomicUMin 14(gs_ua) 17 18 39
+                              Store 20(out_u1) 40
+              41:     12(int) Load 15(gs_ub)
+              42:           2 AtomicOr 14(gs_ua) 17 18 41
+              43:     12(int) Load 15(gs_ub)
+              44:     12(int) AtomicOr 14(gs_ua) 17 18 43
+                              Store 20(out_u1) 44
+              45:     12(int) Load 15(gs_ub)
+              46:           2 AtomicXor 14(gs_ua) 17 18 45
+              47:     12(int) Load 15(gs_ub)
+              48:     12(int) AtomicXor 14(gs_ua) 17 18 47
+                              Store 20(out_u1) 48
+                              ReturnValue 49
+                              FunctionEnd
index e27b11a..80ac3dd 100644 (file)
@@ -2,1055 +2,1087 @@ hlsl.intrinsics.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:66  Function Definition: PixelShaderFunction(f1;f1;f1; (temp float)
-0:2    Function Parameters: 
-0:2      'inF0' (temp float)
-0:2      'inF1' (temp float)
-0:2      'inF2' (temp float)
+0:87  Function Definition: PixelShaderFunction(f1;f1;f1;u1;u1; (temp float)
+0:17    Function Parameters: 
+0:17      'inF0' (temp float)
+0:17      'inF1' (temp float)
+0:17      'inF2' (temp float)
+0:17      'inU0' (temp uint)
+0:17      'inU1' (temp uint)
 0:?     Sequence
-0:3      all (global bool)
-0:3        'inF0' (temp float)
-0:4      Absolute value (global float)
-0:4        'inF0' (temp float)
-0:5      arc cosine (global float)
-0:5        'inF0' (temp float)
-0:6      any (global bool)
-0:6        'inF0' (temp float)
-0:7      arc sine (global float)
-0:7        'inF0' (temp float)
-0:8      arc tangent (global float)
-0:8        'inF0' (temp float)
-0:9      arc tangent (global float)
-0:9        'inF0' (temp float)
-0:9        'inF1' (temp float)
-0:10      Ceiling (global float)
-0:10        'inF0' (temp float)
-0:11      clamp (global float)
-0:11        'inF0' (temp float)
-0:11        'inF1' (temp float)
-0:11        'inF2' (temp float)
-0:12      Test condition and select (temp void)
-0:12        Condition
-0:12        Compare Less Than (temp bool)
-0:12          'inF0' (temp float)
-0:12          Constant:
-0:12            0.000000
-0:12        true case
-0:12        Branch: Kill
-0:13      cosine (global float)
-0:13        'inF0' (temp float)
-0:14      hyp. cosine (global float)
-0:14        'inF0' (temp float)
-0:15      bitCount (global uint)
-0:15        Constant:
-0:15          7 (const uint)
-0:16      dPdx (global float)
-0:16        'inF0' (temp float)
-0:17      dPdxCoarse (global float)
-0:17        'inF0' (temp float)
-0:18      dPdxFine (global float)
-0:18        'inF0' (temp float)
-0:19      dPdy (global float)
-0:19        'inF0' (temp float)
-0:20      dPdyCoarse (global float)
+0:20      all (global bool)
 0:20        'inF0' (temp float)
-0:21      dPdyFine (global float)
+0:21      Absolute value (global float)
 0:21        'inF0' (temp float)
-0:22      degrees (global float)
+0:22      arc cosine (global float)
 0:22        'inF0' (temp float)
-0:26      exp (global float)
+0:23      any (global bool)
+0:23        'inF0' (temp float)
+0:24      arc sine (global float)
+0:24        'inF0' (temp float)
+0:25      floatBitsToInt (global int)
+0:25        'inF0' (temp float)
+0:26      floatBitsToUint (global uint)
 0:26        'inF0' (temp float)
-0:27      exp2 (global float)
-0:27        'inF0' (temp float)
-0:28      findMSB (global int)
-0:28        Constant:
-0:28          7 (const int)
-0:29      findLSB (global int)
-0:29        Constant:
-0:29          7 (const int)
-0:30      Floor (global float)
+0:27      intBitsToFloat (global float)
+0:27        'inU0' (temp uint)
+0:29      arc tangent (global float)
+0:29        'inF0' (temp float)
+0:30      arc tangent (global float)
 0:30        'inF0' (temp float)
-0:32      mod (global float)
+0:30        'inF1' (temp float)
+0:31      Ceiling (global float)
+0:31        'inF0' (temp float)
+0:32      clamp (global float)
 0:32        'inF0' (temp float)
 0:32        'inF1' (temp float)
-0:33      Fraction (global float)
-0:33        'inF0' (temp float)
-0:34      frexp (global float)
+0:32        'inF2' (temp float)
+0:33      Test condition and select (temp void)
+0:33        Condition
+0:33        Compare Less Than (temp bool)
+0:33          'inF0' (temp float)
+0:33          Constant:
+0:33            0.000000
+0:33        true case
+0:33        Branch: Kill
+0:34      cosine (global float)
 0:34        'inF0' (temp float)
-0:34        'inF1' (temp float)
-0:35      fwidth (global float)
+0:35      hyp. cosine (global float)
 0:35        'inF0' (temp float)
-0:36      isinf (global bool)
-0:36        'inF0' (temp float)
-0:37      isnan (global bool)
+0:36      bitCount (global uint)
+0:36        Constant:
+0:36          7 (const uint)
+0:37      dPdx (global float)
 0:37        'inF0' (temp float)
-0:38      ldexp (global float)
+0:38      dPdxCoarse (global float)
 0:38        'inF0' (temp float)
-0:38        'inF1' (temp float)
-0:39      log (global float)
+0:39      dPdxFine (global float)
 0:39        'inF0' (temp float)
-0:40      component-wise multiply (temp float)
-0:40        log2 (temp float)
-0:40          'inF0' (temp float)
-0:40        Constant:
-0:40          0.301030
-0:41      log2 (global float)
+0:40      dPdy (global float)
+0:40        'inF0' (temp float)
+0:41      dPdyCoarse (global float)
 0:41        'inF0' (temp float)
-0:42      max (global float)
+0:42      dPdyFine (global float)
 0:42        'inF0' (temp float)
-0:42        'inF1' (temp float)
-0:43      min (global float)
+0:43      degrees (global float)
 0:43        'inF0' (temp float)
-0:43        'inF1' (temp float)
-0:44      pow (global float)
-0:44        'inF0' (temp float)
-0:44        'inF1' (temp float)
-0:45      radians (global float)
-0:45        'inF0' (temp float)
-0:46      divide (temp float)
-0:46        Constant:
-0:46          1.000000
-0:46        'inF0' (temp float)
-0:47      bitFieldReverse (global uint)
-0:47        Constant:
-0:47          2 (const uint)
-0:48      roundEven (global float)
+0:47      exp (global float)
+0:47        'inF0' (temp float)
+0:48      exp2 (global float)
 0:48        'inF0' (temp float)
-0:49      inverse sqrt (global float)
-0:49        'inF0' (temp float)
-0:50      clamp (global float)
-0:50        'inF0' (temp float)
+0:49      findMSB (global int)
+0:49        Constant:
+0:49          7 (const int)
+0:50      findLSB (global int)
 0:50        Constant:
-0:50          0.000000
-0:50        Constant:
-0:50          1.000000
-0:51      Sign (global float)
+0:50          7 (const int)
+0:51      Floor (global float)
 0:51        'inF0' (temp float)
-0:52      sine (global float)
-0:52        'inF0' (temp float)
-0:53      Sequence
-0:53        move second child to first child (temp float)
-0:53          'inF1' (temp float)
-0:53          sine (temp float)
-0:53            'inF0' (temp float)
-0:53        move second child to first child (temp float)
-0:53          'inF2' (temp float)
-0:53          cosine (temp float)
-0:53            'inF0' (temp float)
-0:54      hyp. sine (global float)
+0:53      mod (global float)
+0:53        'inF0' (temp float)
+0:53        'inF1' (temp float)
+0:54      Fraction (global float)
 0:54        'inF0' (temp float)
-0:55      smoothstep (global float)
+0:55      frexp (global float)
 0:55        'inF0' (temp float)
 0:55        'inF1' (temp float)
-0:55        'inF2' (temp float)
-0:56      sqrt (global float)
+0:56      fwidth (global float)
 0:56        'inF0' (temp float)
-0:57      step (global float)
+0:57      isinf (global bool)
 0:57        'inF0' (temp float)
-0:57        'inF1' (temp float)
-0:58      tangent (global float)
+0:58      isnan (global bool)
 0:58        'inF0' (temp float)
-0:59      hyp. tangent (global float)
+0:59      ldexp (global float)
 0:59        'inF0' (temp float)
-0:61      trunc (global float)
-0:61        'inF0' (temp float)
-0:63      Branch: Return with expression
-0:63        Constant:
-0:63          0.000000
-0:72  Function Definition: PixelShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
-0:67    Function Parameters: 
-0:67      'inF0' (temp 1-component vector of float)
-0:67      'inF1' (temp 1-component vector of float)
-0:67      'inF2' (temp 1-component vector of float)
+0:59        'inF1' (temp float)
+0:60      log (global float)
+0:60        'inF0' (temp float)
+0:61      component-wise multiply (temp float)
+0:61        log2 (temp float)
+0:61          'inF0' (temp float)
+0:61        Constant:
+0:61          0.301030
+0:62      log2 (global float)
+0:62        'inF0' (temp float)
+0:63      max (global float)
+0:63        'inF0' (temp float)
+0:63        'inF1' (temp float)
+0:64      min (global float)
+0:64        'inF0' (temp float)
+0:64        'inF1' (temp float)
+0:65      pow (global float)
+0:65        'inF0' (temp float)
+0:65        'inF1' (temp float)
+0:66      radians (global float)
+0:66        'inF0' (temp float)
+0:67      divide (temp float)
+0:67        Constant:
+0:67          1.000000
+0:67        'inF0' (temp float)
+0:68      bitFieldReverse (global uint)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      roundEven (global float)
+0:69        'inF0' (temp float)
+0:70      inverse sqrt (global float)
+0:70        'inF0' (temp float)
+0:71      clamp (temp float)
+0:71        'inF0' (temp float)
+0:71        Constant:
+0:71          0.000000
+0:71        Constant:
+0:71          1.000000
+0:72      Sign (global float)
+0:72        'inF0' (temp float)
+0:73      sine (global float)
+0:73        'inF0' (temp float)
+0:74      Sequence
+0:74        move second child to first child (temp float)
+0:74          'inF1' (temp float)
+0:74          sine (temp float)
+0:74            'inF0' (temp float)
+0:74        move second child to first child (temp float)
+0:74          'inF2' (temp float)
+0:74          cosine (temp float)
+0:74            'inF0' (temp float)
+0:75      hyp. sine (global float)
+0:75        'inF0' (temp float)
+0:76      smoothstep (global float)
+0:76        'inF0' (temp float)
+0:76        'inF1' (temp float)
+0:76        'inF2' (temp float)
+0:77      sqrt (global float)
+0:77        'inF0' (temp float)
+0:78      step (global float)
+0:78        'inF0' (temp float)
+0:78        'inF1' (temp float)
+0:79      tangent (global float)
+0:79        'inF0' (temp float)
+0:80      hyp. tangent (global float)
+0:80        'inF0' (temp float)
+0:82      trunc (global float)
+0:82        'inF0' (temp float)
+0:84      Branch: Return with expression
+0:84        Constant:
+0:84          0.000000
+0:93  Function Definition: PixelShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
+0:88    Function Parameters: 
+0:88      'inF0' (temp 1-component vector of float)
+0:88      'inF1' (temp 1-component vector of float)
+0:88      'inF2' (temp 1-component vector of float)
 0:?     Sequence
-0:69      Branch: Return with expression
-0:69        Constant:
-0:69          0.000000
-0:145  Function Definition: PixelShaderFunction(vf2;vf2;vf2; (temp 2-component vector of float)
-0:73    Function Parameters: 
-0:73      'inF0' (temp 2-component vector of float)
-0:73      'inF1' (temp 2-component vector of float)
-0:73      'inF2' (temp 2-component vector of float)
+0:90      Branch: Return with expression
+0:90        Constant:
+0:90          0.000000
+0:172  Function Definition: PixelShaderFunction(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
+0:94    Function Parameters: 
+0:94      'inF0' (temp 2-component vector of float)
+0:94      'inF1' (temp 2-component vector of float)
+0:94      'inF2' (temp 2-component vector of float)
+0:94      'inU0' (temp 2-component vector of uint)
+0:94      'inU1' (temp 2-component vector of uint)
 0:?     Sequence
-0:74      all (global bool)
-0:74        'inF0' (temp 2-component vector of float)
-0:75      Absolute value (global 2-component vector of float)
-0:75        'inF0' (temp 2-component vector of float)
-0:76      arc cosine (global 2-component vector of float)
-0:76        'inF0' (temp 2-component vector of float)
-0:77      any (global bool)
-0:77        'inF0' (temp 2-component vector of float)
-0:78      arc sine (global 2-component vector of float)
-0:78        'inF0' (temp 2-component vector of float)
-0:79      arc tangent (global 2-component vector of float)
-0:79        'inF0' (temp 2-component vector of float)
-0:80      arc tangent (global 2-component vector of float)
-0:80        'inF0' (temp 2-component vector of float)
-0:80        'inF1' (temp 2-component vector of float)
-0:81      Ceiling (global 2-component vector of float)
-0:81        'inF0' (temp 2-component vector of float)
-0:82      clamp (global 2-component vector of float)
-0:82        'inF0' (temp 2-component vector of float)
-0:82        'inF1' (temp 2-component vector of float)
-0:82        'inF2' (temp 2-component vector of float)
-0:83      Test condition and select (temp void)
-0:83        Condition
-0:83        any (temp bool)
-0:83          Compare Less Than (temp 2-component vector of bool)
-0:83            'inF0' (temp 2-component vector of float)
-0:83            Constant:
-0:83              0.000000
-0:83              0.000000
-0:83        true case
-0:83        Branch: Kill
-0:84      cosine (global 2-component vector of float)
-0:84        'inF0' (temp 2-component vector of float)
-0:85      hyp. cosine (global 2-component vector of float)
-0:85        'inF0' (temp 2-component vector of float)
-0:?       bitCount (global 2-component vector of uint)
-0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:87      dPdx (global 2-component vector of float)
-0:87        'inF0' (temp 2-component vector of float)
-0:88      dPdxCoarse (global 2-component vector of float)
-0:88        'inF0' (temp 2-component vector of float)
-0:89      dPdxFine (global 2-component vector of float)
-0:89        'inF0' (temp 2-component vector of float)
-0:90      dPdy (global 2-component vector of float)
-0:90        'inF0' (temp 2-component vector of float)
-0:91      dPdyCoarse (global 2-component vector of float)
-0:91        'inF0' (temp 2-component vector of float)
-0:92      dPdyFine (global 2-component vector of float)
-0:92        'inF0' (temp 2-component vector of float)
-0:93      degrees (global 2-component vector of float)
-0:93        'inF0' (temp 2-component vector of float)
-0:94      distance (global float)
-0:94        'inF0' (temp 2-component vector of float)
-0:94        'inF1' (temp 2-component vector of float)
-0:95      dot-product (global float)
-0:95        'inF0' (temp 2-component vector of float)
-0:95        'inF1' (temp 2-component vector of float)
-0:99      exp (global 2-component vector of float)
+0:97      all (global bool)
+0:97        'inF0' (temp 2-component vector of float)
+0:98      Absolute value (global 2-component vector of float)
+0:98        'inF0' (temp 2-component vector of float)
+0:99      arc cosine (global 2-component vector of float)
 0:99        'inF0' (temp 2-component vector of float)
-0:100      exp2 (global 2-component vector of float)
+0:100      any (global bool)
 0:100        'inF0' (temp 2-component vector of float)
-0:101      face-forward (global 2-component vector of float)
+0:101      arc sine (global 2-component vector of float)
 0:101        'inF0' (temp 2-component vector of float)
-0:101        'inF1' (temp 2-component vector of float)
-0:101        'inF2' (temp 2-component vector of float)
-0:102      findMSB (global int)
-0:102        Constant:
-0:102          7 (const int)
-0:103      findLSB (global int)
-0:103        Constant:
-0:103          7 (const int)
-0:104      Floor (global 2-component vector of float)
-0:104        'inF0' (temp 2-component vector of float)
-0:106      mod (global 2-component vector of float)
+0:102      floatBitsToInt (global 2-component vector of int)
+0:102        'inF0' (temp 2-component vector of float)
+0:103      floatBitsToUint (global 2-component vector of uint)
+0:103        'inF0' (temp 2-component vector of float)
+0:104      intBitsToFloat (global 2-component vector of float)
+0:104        'inU0' (temp 2-component vector of uint)
+0:106      arc tangent (global 2-component vector of float)
 0:106        'inF0' (temp 2-component vector of float)
-0:106        'inF1' (temp 2-component vector of float)
-0:107      Fraction (global 2-component vector of float)
+0:107      arc tangent (global 2-component vector of float)
 0:107        'inF0' (temp 2-component vector of float)
-0:108      frexp (global 2-component vector of float)
+0:107        'inF1' (temp 2-component vector of float)
+0:108      Ceiling (global 2-component vector of float)
 0:108        'inF0' (temp 2-component vector of float)
-0:108        'inF1' (temp 2-component vector of float)
-0:109      fwidth (global 2-component vector of float)
+0:109      clamp (global 2-component vector of float)
 0:109        'inF0' (temp 2-component vector of float)
-0:110      isinf (global 2-component vector of bool)
-0:110        'inF0' (temp 2-component vector of float)
-0:111      isnan (global 2-component vector of bool)
+0:109        'inF1' (temp 2-component vector of float)
+0:109        'inF2' (temp 2-component vector of float)
+0:110      Test condition and select (temp void)
+0:110        Condition
+0:110        any (temp bool)
+0:110          Compare Less Than (temp 2-component vector of bool)
+0:110            'inF0' (temp 2-component vector of float)
+0:110            Constant:
+0:110              0.000000
+0:110              0.000000
+0:110        true case
+0:110        Branch: Kill
+0:111      cosine (global 2-component vector of float)
 0:111        'inF0' (temp 2-component vector of float)
-0:112      ldexp (global 2-component vector of float)
+0:112      hyp. cosine (global 2-component vector of float)
 0:112        'inF0' (temp 2-component vector of float)
-0:112        'inF1' (temp 2-component vector of float)
-0:113      length (global float)
-0:113        'inF0' (temp 2-component vector of float)
-0:114      log (global 2-component vector of float)
+0:?       bitCount (global 2-component vector of uint)
+0:?         Constant:
+0:?           7 (const uint)
+0:?           3 (const uint)
+0:114      dPdx (global 2-component vector of float)
 0:114        'inF0' (temp 2-component vector of float)
-0:115      vector-scale (temp 2-component vector of float)
-0:115        log2 (temp 2-component vector of float)
-0:115          'inF0' (temp 2-component vector of float)
-0:115        Constant:
-0:115          0.301030
-0:116      log2 (global 2-component vector of float)
+0:115      dPdxCoarse (global 2-component vector of float)
+0:115        'inF0' (temp 2-component vector of float)
+0:116      dPdxFine (global 2-component vector of float)
 0:116        'inF0' (temp 2-component vector of float)
-0:117      max (global 2-component vector of float)
+0:117      dPdy (global 2-component vector of float)
 0:117        'inF0' (temp 2-component vector of float)
-0:117        'inF1' (temp 2-component vector of float)
-0:118      min (global 2-component vector of float)
+0:118      dPdyCoarse (global 2-component vector of float)
 0:118        'inF0' (temp 2-component vector of float)
-0:118        'inF1' (temp 2-component vector of float)
-0:119      normalize (global 2-component vector of float)
+0:119      dPdyFine (global 2-component vector of float)
 0:119        'inF0' (temp 2-component vector of float)
-0:120      pow (global 2-component vector of float)
+0:120      degrees (global 2-component vector of float)
 0:120        'inF0' (temp 2-component vector of float)
-0:120        'inF1' (temp 2-component vector of float)
-0:121      radians (global 2-component vector of float)
+0:121      distance (global float)
 0:121        'inF0' (temp 2-component vector of float)
-0:122      divide (temp 2-component vector of float)
-0:122        Constant:
-0:122          1.000000
+0:121        'inF1' (temp 2-component vector of float)
+0:122      dot-product (global float)
 0:122        'inF0' (temp 2-component vector of float)
-0:123      reflect (global 2-component vector of float)
-0:123        'inF0' (temp 2-component vector of float)
-0:123        'inF1' (temp 2-component vector of float)
-0:124      refract (global 2-component vector of float)
-0:124        'inF0' (temp 2-component vector of float)
-0:124        'inF1' (temp 2-component vector of float)
-0:124        Constant:
-0:124          2.000000
-0:?       bitFieldReverse (global 2-component vector of uint)
-0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:126      roundEven (global 2-component vector of float)
+0:122        'inF1' (temp 2-component vector of float)
+0:126      exp (global 2-component vector of float)
 0:126        'inF0' (temp 2-component vector of float)
-0:127      inverse sqrt (global 2-component vector of float)
+0:127      exp2 (global 2-component vector of float)
 0:127        'inF0' (temp 2-component vector of float)
-0:128      clamp (global 2-component vector of float)
+0:128      face-forward (global 2-component vector of float)
 0:128        'inF0' (temp 2-component vector of float)
-0:128        Constant:
-0:128          0.000000
-0:128        Constant:
-0:128          1.000000
-0:129      Sign (global 2-component vector of float)
-0:129        'inF0' (temp 2-component vector of float)
-0:130      sine (global 2-component vector of float)
-0:130        'inF0' (temp 2-component vector of float)
-0:131      Sequence
-0:131        move second child to first child (temp 2-component vector of float)
-0:131          'inF1' (temp 2-component vector of float)
-0:131          sine (temp 2-component vector of float)
-0:131            'inF0' (temp 2-component vector of float)
-0:131        move second child to first child (temp 2-component vector of float)
-0:131          'inF2' (temp 2-component vector of float)
-0:131          cosine (temp 2-component vector of float)
-0:131            'inF0' (temp 2-component vector of float)
-0:132      hyp. sine (global 2-component vector of float)
-0:132        'inF0' (temp 2-component vector of float)
-0:133      smoothstep (global 2-component vector of float)
+0:128        'inF1' (temp 2-component vector of float)
+0:128        'inF2' (temp 2-component vector of float)
+0:129      findMSB (global int)
+0:129        Constant:
+0:129          7 (const int)
+0:130      findLSB (global int)
+0:130        Constant:
+0:130          7 (const int)
+0:131      Floor (global 2-component vector of float)
+0:131        'inF0' (temp 2-component vector of float)
+0:133      mod (global 2-component vector of float)
 0:133        'inF0' (temp 2-component vector of float)
 0:133        'inF1' (temp 2-component vector of float)
-0:133        'inF2' (temp 2-component vector of float)
-0:134      sqrt (global 2-component vector of float)
+0:134      Fraction (global 2-component vector of float)
 0:134        'inF0' (temp 2-component vector of float)
-0:135      step (global 2-component vector of float)
+0:135      frexp (global 2-component vector of float)
 0:135        'inF0' (temp 2-component vector of float)
 0:135        'inF1' (temp 2-component vector of float)
-0:136      tangent (global 2-component vector of float)
+0:136      fwidth (global 2-component vector of float)
 0:136        'inF0' (temp 2-component vector of float)
-0:137      hyp. tangent (global 2-component vector of float)
+0:137      isinf (global 2-component vector of bool)
 0:137        'inF0' (temp 2-component vector of float)
-0:139      trunc (global 2-component vector of float)
+0:138      isnan (global 2-component vector of bool)
+0:138        'inF0' (temp 2-component vector of float)
+0:139      ldexp (global 2-component vector of float)
 0:139        'inF0' (temp 2-component vector of float)
-0:142      Branch: Return with expression
+0:139        'inF1' (temp 2-component vector of float)
+0:140      length (global float)
+0:140        'inF0' (temp 2-component vector of float)
+0:141      log (global 2-component vector of float)
+0:141        'inF0' (temp 2-component vector of float)
+0:142      vector-scale (temp 2-component vector of float)
+0:142        log2 (temp 2-component vector of float)
+0:142          'inF0' (temp 2-component vector of float)
+0:142        Constant:
+0:142          0.301030
+0:143      log2 (global 2-component vector of float)
+0:143        'inF0' (temp 2-component vector of float)
+0:144      max (global 2-component vector of float)
+0:144        'inF0' (temp 2-component vector of float)
+0:144        'inF1' (temp 2-component vector of float)
+0:145      min (global 2-component vector of float)
+0:145        'inF0' (temp 2-component vector of float)
+0:145        'inF1' (temp 2-component vector of float)
+0:146      normalize (global 2-component vector of float)
+0:146        'inF0' (temp 2-component vector of float)
+0:147      pow (global 2-component vector of float)
+0:147        'inF0' (temp 2-component vector of float)
+0:147        'inF1' (temp 2-component vector of float)
+0:148      radians (global 2-component vector of float)
+0:148        'inF0' (temp 2-component vector of float)
+0:149      divide (temp 2-component vector of float)
+0:149        Constant:
+0:149          1.000000
+0:149        'inF0' (temp 2-component vector of float)
+0:150      reflect (global 2-component vector of float)
+0:150        'inF0' (temp 2-component vector of float)
+0:150        'inF1' (temp 2-component vector of float)
+0:151      refract (global 2-component vector of float)
+0:151        'inF0' (temp 2-component vector of float)
+0:151        'inF1' (temp 2-component vector of float)
+0:151        Constant:
+0:151          2.000000
+0:?       bitFieldReverse (global 2-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:153      roundEven (global 2-component vector of float)
+0:153        'inF0' (temp 2-component vector of float)
+0:154      inverse sqrt (global 2-component vector of float)
+0:154        'inF0' (temp 2-component vector of float)
+0:155      clamp (temp 2-component vector of float)
+0:155        'inF0' (temp 2-component vector of float)
+0:155        Constant:
+0:155          0.000000
+0:155        Constant:
+0:155          1.000000
+0:156      Sign (global 2-component vector of float)
+0:156        'inF0' (temp 2-component vector of float)
+0:157      sine (global 2-component vector of float)
+0:157        'inF0' (temp 2-component vector of float)
+0:158      Sequence
+0:158        move second child to first child (temp 2-component vector of float)
+0:158          'inF1' (temp 2-component vector of float)
+0:158          sine (temp 2-component vector of float)
+0:158            'inF0' (temp 2-component vector of float)
+0:158        move second child to first child (temp 2-component vector of float)
+0:158          'inF2' (temp 2-component vector of float)
+0:158          cosine (temp 2-component vector of float)
+0:158            'inF0' (temp 2-component vector of float)
+0:159      hyp. sine (global 2-component vector of float)
+0:159        'inF0' (temp 2-component vector of float)
+0:160      smoothstep (global 2-component vector of float)
+0:160        'inF0' (temp 2-component vector of float)
+0:160        'inF1' (temp 2-component vector of float)
+0:160        'inF2' (temp 2-component vector of float)
+0:161      sqrt (global 2-component vector of float)
+0:161        'inF0' (temp 2-component vector of float)
+0:162      step (global 2-component vector of float)
+0:162        'inF0' (temp 2-component vector of float)
+0:162        'inF1' (temp 2-component vector of float)
+0:163      tangent (global 2-component vector of float)
+0:163        'inF0' (temp 2-component vector of float)
+0:164      hyp. tangent (global 2-component vector of float)
+0:164        'inF0' (temp 2-component vector of float)
+0:166      trunc (global 2-component vector of float)
+0:166        'inF0' (temp 2-component vector of float)
+0:169      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:219  Function Definition: PixelShaderFunction(vf3;vf3;vf3; (temp 3-component vector of float)
-0:146    Function Parameters: 
-0:146      'inF0' (temp 3-component vector of float)
-0:146      'inF1' (temp 3-component vector of float)
-0:146      'inF2' (temp 3-component vector of float)
+0:252  Function Definition: PixelShaderFunction(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
+0:173    Function Parameters: 
+0:173      'inF0' (temp 3-component vector of float)
+0:173      'inF1' (temp 3-component vector of float)
+0:173      'inF2' (temp 3-component vector of float)
+0:173      'inU0' (temp 3-component vector of uint)
+0:173      'inU1' (temp 3-component vector of uint)
 0:?     Sequence
-0:147      all (global bool)
-0:147        'inF0' (temp 3-component vector of float)
-0:148      Absolute value (global 3-component vector of float)
-0:148        'inF0' (temp 3-component vector of float)
-0:149      arc cosine (global 3-component vector of float)
-0:149        'inF0' (temp 3-component vector of float)
-0:150      any (global bool)
-0:150        'inF0' (temp 3-component vector of float)
-0:151      arc sine (global 3-component vector of float)
-0:151        'inF0' (temp 3-component vector of float)
-0:152      arc tangent (global 3-component vector of float)
-0:152        'inF0' (temp 3-component vector of float)
-0:153      arc tangent (global 3-component vector of float)
-0:153        'inF0' (temp 3-component vector of float)
-0:153        'inF1' (temp 3-component vector of float)
-0:154      Ceiling (global 3-component vector of float)
-0:154        'inF0' (temp 3-component vector of float)
-0:155      clamp (global 3-component vector of float)
-0:155        'inF0' (temp 3-component vector of float)
-0:155        'inF1' (temp 3-component vector of float)
-0:155        'inF2' (temp 3-component vector of float)
-0:156      Test condition and select (temp void)
-0:156        Condition
-0:156        any (temp bool)
-0:156          Compare Less Than (temp 3-component vector of bool)
-0:156            'inF0' (temp 3-component vector of float)
-0:156            Constant:
-0:156              0.000000
-0:156              0.000000
-0:156              0.000000
-0:156        true case
-0:156        Branch: Kill
-0:157      cosine (global 3-component vector of float)
-0:157        'inF0' (temp 3-component vector of float)
-0:158      hyp. cosine (global 3-component vector of float)
-0:158        'inF0' (temp 3-component vector of float)
-0:?       bitCount (global 3-component vector of uint)
-0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:?           5 (const uint)
-0:160      cross-product (global 3-component vector of float)
-0:160        'inF0' (temp 3-component vector of float)
-0:160        'inF1' (temp 3-component vector of float)
-0:161      dPdx (global 3-component vector of float)
-0:161        'inF0' (temp 3-component vector of float)
-0:162      dPdxCoarse (global 3-component vector of float)
-0:162        'inF0' (temp 3-component vector of float)
-0:163      dPdxFine (global 3-component vector of float)
-0:163        'inF0' (temp 3-component vector of float)
-0:164      dPdy (global 3-component vector of float)
-0:164        'inF0' (temp 3-component vector of float)
-0:165      dPdyCoarse (global 3-component vector of float)
-0:165        'inF0' (temp 3-component vector of float)
-0:166      dPdyFine (global 3-component vector of float)
-0:166        'inF0' (temp 3-component vector of float)
-0:167      degrees (global 3-component vector of float)
-0:167        'inF0' (temp 3-component vector of float)
-0:168      distance (global float)
-0:168        'inF0' (temp 3-component vector of float)
-0:168        'inF1' (temp 3-component vector of float)
-0:169      dot-product (global float)
-0:169        'inF0' (temp 3-component vector of float)
-0:169        'inF1' (temp 3-component vector of float)
-0:173      exp (global 3-component vector of float)
-0:173        'inF0' (temp 3-component vector of float)
-0:174      exp2 (global 3-component vector of float)
-0:174        'inF0' (temp 3-component vector of float)
-0:175      face-forward (global 3-component vector of float)
-0:175        'inF0' (temp 3-component vector of float)
-0:175        'inF1' (temp 3-component vector of float)
-0:175        'inF2' (temp 3-component vector of float)
-0:176      findMSB (global int)
-0:176        Constant:
-0:176          7 (const int)
-0:177      findLSB (global int)
-0:177        Constant:
-0:177          7 (const int)
-0:178      Floor (global 3-component vector of float)
+0:176      all (global bool)
+0:176        'inF0' (temp 3-component vector of float)
+0:177      Absolute value (global 3-component vector of float)
+0:177        'inF0' (temp 3-component vector of float)
+0:178      arc cosine (global 3-component vector of float)
 0:178        'inF0' (temp 3-component vector of float)
-0:180      mod (global 3-component vector of float)
+0:179      any (global bool)
+0:179        'inF0' (temp 3-component vector of float)
+0:180      arc sine (global 3-component vector of float)
 0:180        'inF0' (temp 3-component vector of float)
-0:180        'inF1' (temp 3-component vector of float)
-0:181      Fraction (global 3-component vector of float)
+0:181      floatBitsToInt (global 3-component vector of int)
 0:181        'inF0' (temp 3-component vector of float)
-0:182      frexp (global 3-component vector of float)
+0:182      floatBitsToUint (global 3-component vector of uint)
 0:182        'inF0' (temp 3-component vector of float)
-0:182        'inF1' (temp 3-component vector of float)
-0:183      fwidth (global 3-component vector of float)
-0:183        'inF0' (temp 3-component vector of float)
-0:184      isinf (global 3-component vector of bool)
-0:184        'inF0' (temp 3-component vector of float)
-0:185      isnan (global 3-component vector of bool)
+0:183      intBitsToFloat (global 3-component vector of float)
+0:183        'inU0' (temp 3-component vector of uint)
+0:185      arc tangent (global 3-component vector of float)
 0:185        'inF0' (temp 3-component vector of float)
-0:186      ldexp (global 3-component vector of float)
+0:186      arc tangent (global 3-component vector of float)
 0:186        'inF0' (temp 3-component vector of float)
 0:186        'inF1' (temp 3-component vector of float)
-0:187      length (global float)
+0:187      Ceiling (global 3-component vector of float)
 0:187        'inF0' (temp 3-component vector of float)
-0:188      log (global 3-component vector of float)
+0:188      clamp (global 3-component vector of float)
 0:188        'inF0' (temp 3-component vector of float)
-0:189      vector-scale (temp 3-component vector of float)
-0:189        log2 (temp 3-component vector of float)
-0:189          'inF0' (temp 3-component vector of float)
-0:189        Constant:
-0:189          0.301030
-0:190      log2 (global 3-component vector of float)
+0:188        'inF1' (temp 3-component vector of float)
+0:188        'inF2' (temp 3-component vector of float)
+0:189      Test condition and select (temp void)
+0:189        Condition
+0:189        any (temp bool)
+0:189          Compare Less Than (temp 3-component vector of bool)
+0:189            'inF0' (temp 3-component vector of float)
+0:189            Constant:
+0:189              0.000000
+0:189              0.000000
+0:189              0.000000
+0:189        true case
+0:189        Branch: Kill
+0:190      cosine (global 3-component vector of float)
 0:190        'inF0' (temp 3-component vector of float)
-0:191      max (global 3-component vector of float)
+0:191      hyp. cosine (global 3-component vector of float)
 0:191        'inF0' (temp 3-component vector of float)
-0:191        'inF1' (temp 3-component vector of float)
-0:192      min (global 3-component vector of float)
-0:192        'inF0' (temp 3-component vector of float)
-0:192        'inF1' (temp 3-component vector of float)
-0:193      normalize (global 3-component vector of float)
+0:?       bitCount (global 3-component vector of uint)
+0:?         Constant:
+0:?           7 (const uint)
+0:?           3 (const uint)
+0:?           5 (const uint)
+0:193      cross-product (global 3-component vector of float)
 0:193        'inF0' (temp 3-component vector of float)
-0:194      pow (global 3-component vector of float)
+0:193        'inF1' (temp 3-component vector of float)
+0:194      dPdx (global 3-component vector of float)
 0:194        'inF0' (temp 3-component vector of float)
-0:194        'inF1' (temp 3-component vector of float)
-0:195      radians (global 3-component vector of float)
+0:195      dPdxCoarse (global 3-component vector of float)
 0:195        'inF0' (temp 3-component vector of float)
-0:196      divide (temp 3-component vector of float)
-0:196        Constant:
-0:196          1.000000
+0:196      dPdxFine (global 3-component vector of float)
 0:196        'inF0' (temp 3-component vector of float)
-0:197      reflect (global 3-component vector of float)
+0:197      dPdy (global 3-component vector of float)
 0:197        'inF0' (temp 3-component vector of float)
-0:197        'inF1' (temp 3-component vector of float)
-0:198      refract (global 3-component vector of float)
+0:198      dPdyCoarse (global 3-component vector of float)
 0:198        'inF0' (temp 3-component vector of float)
-0:198        'inF1' (temp 3-component vector of float)
-0:198        Constant:
-0:198          2.000000
-0:?       bitFieldReverse (global 3-component vector of uint)
-0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:?           3 (const uint)
-0:200      roundEven (global 3-component vector of float)
+0:199      dPdyFine (global 3-component vector of float)
+0:199        'inF0' (temp 3-component vector of float)
+0:200      degrees (global 3-component vector of float)
 0:200        'inF0' (temp 3-component vector of float)
-0:201      inverse sqrt (global 3-component vector of float)
+0:201      distance (global float)
 0:201        'inF0' (temp 3-component vector of float)
-0:202      clamp (global 3-component vector of float)
+0:201        'inF1' (temp 3-component vector of float)
+0:202      dot-product (global float)
 0:202        'inF0' (temp 3-component vector of float)
-0:202        Constant:
-0:202          0.000000
-0:202        Constant:
-0:202          1.000000
-0:203      Sign (global 3-component vector of float)
-0:203        'inF0' (temp 3-component vector of float)
-0:204      sine (global 3-component vector of float)
-0:204        'inF0' (temp 3-component vector of float)
-0:205      Sequence
-0:205        move second child to first child (temp 3-component vector of float)
-0:205          'inF1' (temp 3-component vector of float)
-0:205          sine (temp 3-component vector of float)
-0:205            'inF0' (temp 3-component vector of float)
-0:205        move second child to first child (temp 3-component vector of float)
-0:205          'inF2' (temp 3-component vector of float)
-0:205          cosine (temp 3-component vector of float)
-0:205            'inF0' (temp 3-component vector of float)
-0:206      hyp. sine (global 3-component vector of float)
+0:202        'inF1' (temp 3-component vector of float)
+0:206      exp (global 3-component vector of float)
 0:206        'inF0' (temp 3-component vector of float)
-0:207      smoothstep (global 3-component vector of float)
+0:207      exp2 (global 3-component vector of float)
 0:207        'inF0' (temp 3-component vector of float)
-0:207        'inF1' (temp 3-component vector of float)
-0:207        'inF2' (temp 3-component vector of float)
-0:208      sqrt (global 3-component vector of float)
+0:208      face-forward (global 3-component vector of float)
 0:208        'inF0' (temp 3-component vector of float)
-0:209      step (global 3-component vector of float)
-0:209        'inF0' (temp 3-component vector of float)
-0:209        'inF1' (temp 3-component vector of float)
-0:210      tangent (global 3-component vector of float)
-0:210        'inF0' (temp 3-component vector of float)
-0:211      hyp. tangent (global 3-component vector of float)
+0:208        'inF1' (temp 3-component vector of float)
+0:208        'inF2' (temp 3-component vector of float)
+0:209      findMSB (global int)
+0:209        Constant:
+0:209          7 (const int)
+0:210      findLSB (global int)
+0:210        Constant:
+0:210          7 (const int)
+0:211      Floor (global 3-component vector of float)
 0:211        'inF0' (temp 3-component vector of float)
-0:213      trunc (global 3-component vector of float)
+0:213      mod (global 3-component vector of float)
 0:213        'inF0' (temp 3-component vector of float)
-0:216      Branch: Return with expression
+0:213        'inF1' (temp 3-component vector of float)
+0:214      Fraction (global 3-component vector of float)
+0:214        'inF0' (temp 3-component vector of float)
+0:215      frexp (global 3-component vector of float)
+0:215        'inF0' (temp 3-component vector of float)
+0:215        'inF1' (temp 3-component vector of float)
+0:216      fwidth (global 3-component vector of float)
+0:216        'inF0' (temp 3-component vector of float)
+0:217      isinf (global 3-component vector of bool)
+0:217        'inF0' (temp 3-component vector of float)
+0:218      isnan (global 3-component vector of bool)
+0:218        'inF0' (temp 3-component vector of float)
+0:219      ldexp (global 3-component vector of float)
+0:219        'inF0' (temp 3-component vector of float)
+0:219        'inF1' (temp 3-component vector of float)
+0:220      length (global float)
+0:220        'inF0' (temp 3-component vector of float)
+0:221      log (global 3-component vector of float)
+0:221        'inF0' (temp 3-component vector of float)
+0:222      vector-scale (temp 3-component vector of float)
+0:222        log2 (temp 3-component vector of float)
+0:222          'inF0' (temp 3-component vector of float)
+0:222        Constant:
+0:222          0.301030
+0:223      log2 (global 3-component vector of float)
+0:223        'inF0' (temp 3-component vector of float)
+0:224      max (global 3-component vector of float)
+0:224        'inF0' (temp 3-component vector of float)
+0:224        'inF1' (temp 3-component vector of float)
+0:225      min (global 3-component vector of float)
+0:225        'inF0' (temp 3-component vector of float)
+0:225        'inF1' (temp 3-component vector of float)
+0:226      normalize (global 3-component vector of float)
+0:226        'inF0' (temp 3-component vector of float)
+0:227      pow (global 3-component vector of float)
+0:227        'inF0' (temp 3-component vector of float)
+0:227        'inF1' (temp 3-component vector of float)
+0:228      radians (global 3-component vector of float)
+0:228        'inF0' (temp 3-component vector of float)
+0:229      divide (temp 3-component vector of float)
+0:229        Constant:
+0:229          1.000000
+0:229        'inF0' (temp 3-component vector of float)
+0:230      reflect (global 3-component vector of float)
+0:230        'inF0' (temp 3-component vector of float)
+0:230        'inF1' (temp 3-component vector of float)
+0:231      refract (global 3-component vector of float)
+0:231        'inF0' (temp 3-component vector of float)
+0:231        'inF1' (temp 3-component vector of float)
+0:231        Constant:
+0:231          2.000000
+0:?       bitFieldReverse (global 3-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:?           3 (const uint)
+0:233      roundEven (global 3-component vector of float)
+0:233        'inF0' (temp 3-component vector of float)
+0:234      inverse sqrt (global 3-component vector of float)
+0:234        'inF0' (temp 3-component vector of float)
+0:235      clamp (temp 3-component vector of float)
+0:235        'inF0' (temp 3-component vector of float)
+0:235        Constant:
+0:235          0.000000
+0:235        Constant:
+0:235          1.000000
+0:236      Sign (global 3-component vector of float)
+0:236        'inF0' (temp 3-component vector of float)
+0:237      sine (global 3-component vector of float)
+0:237        'inF0' (temp 3-component vector of float)
+0:238      Sequence
+0:238        move second child to first child (temp 3-component vector of float)
+0:238          'inF1' (temp 3-component vector of float)
+0:238          sine (temp 3-component vector of float)
+0:238            'inF0' (temp 3-component vector of float)
+0:238        move second child to first child (temp 3-component vector of float)
+0:238          'inF2' (temp 3-component vector of float)
+0:238          cosine (temp 3-component vector of float)
+0:238            'inF0' (temp 3-component vector of float)
+0:239      hyp. sine (global 3-component vector of float)
+0:239        'inF0' (temp 3-component vector of float)
+0:240      smoothstep (global 3-component vector of float)
+0:240        'inF0' (temp 3-component vector of float)
+0:240        'inF1' (temp 3-component vector of float)
+0:240        'inF2' (temp 3-component vector of float)
+0:241      sqrt (global 3-component vector of float)
+0:241        'inF0' (temp 3-component vector of float)
+0:242      step (global 3-component vector of float)
+0:242        'inF0' (temp 3-component vector of float)
+0:242        'inF1' (temp 3-component vector of float)
+0:243      tangent (global 3-component vector of float)
+0:243        'inF0' (temp 3-component vector of float)
+0:244      hyp. tangent (global 3-component vector of float)
+0:244        'inF0' (temp 3-component vector of float)
+0:246      trunc (global 3-component vector of float)
+0:246        'inF0' (temp 3-component vector of float)
+0:249      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:349  Function Definition: PixelShaderFunction(vf4;vf4;vf4; (temp 4-component vector of float)
-0:220    Function Parameters: 
-0:220      'inF0' (temp 4-component vector of float)
-0:220      'inF1' (temp 4-component vector of float)
-0:220      'inF2' (temp 4-component vector of float)
+0:393  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
+0:253    Function Parameters: 
+0:253      'inF0' (temp 4-component vector of float)
+0:253      'inF1' (temp 4-component vector of float)
+0:253      'inF2' (temp 4-component vector of float)
+0:253      'inU0' (temp 4-component vector of uint)
+0:253      'inU1' (temp 4-component vector of uint)
 0:?     Sequence
-0:221      all (global bool)
-0:221        'inF0' (temp 4-component vector of float)
-0:222      Absolute value (global 4-component vector of float)
-0:222        'inF0' (temp 4-component vector of float)
-0:223      arc cosine (global 4-component vector of float)
-0:223        'inF0' (temp 4-component vector of float)
-0:224      any (global bool)
-0:224        'inF0' (temp 4-component vector of float)
-0:225      arc sine (global 4-component vector of float)
-0:225        'inF0' (temp 4-component vector of float)
-0:226      arc tangent (global 4-component vector of float)
-0:226        'inF0' (temp 4-component vector of float)
-0:227      arc tangent (global 4-component vector of float)
-0:227        'inF0' (temp 4-component vector of float)
-0:227        'inF1' (temp 4-component vector of float)
-0:228      Ceiling (global 4-component vector of float)
-0:228        'inF0' (temp 4-component vector of float)
-0:229      clamp (global 4-component vector of float)
-0:229        'inF0' (temp 4-component vector of float)
-0:229        'inF1' (temp 4-component vector of float)
-0:229        'inF2' (temp 4-component vector of float)
-0:230      Test condition and select (temp void)
-0:230        Condition
-0:230        any (temp bool)
-0:230          Compare Less Than (temp 4-component vector of bool)
-0:230            'inF0' (temp 4-component vector of float)
-0:230            Constant:
-0:230              0.000000
-0:230              0.000000
-0:230              0.000000
-0:230              0.000000
-0:230        true case
-0:230        Branch: Kill
-0:231      cosine (global 4-component vector of float)
-0:231        'inF0' (temp 4-component vector of float)
-0:232      hyp. cosine (global 4-component vector of float)
-0:232        'inF0' (temp 4-component vector of float)
-0:?       bitCount (global 4-component vector of uint)
-0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:?           5 (const uint)
-0:?           2 (const uint)
-0:234      dPdx (global 4-component vector of float)
-0:234        'inF0' (temp 4-component vector of float)
-0:235      dPdxCoarse (global 4-component vector of float)
-0:235        'inF0' (temp 4-component vector of float)
-0:236      dPdxFine (global 4-component vector of float)
-0:236        'inF0' (temp 4-component vector of float)
-0:237      dPdy (global 4-component vector of float)
-0:237        'inF0' (temp 4-component vector of float)
-0:238      dPdyCoarse (global 4-component vector of float)
-0:238        'inF0' (temp 4-component vector of float)
-0:239      dPdyFine (global 4-component vector of float)
-0:239        'inF0' (temp 4-component vector of float)
-0:240      degrees (global 4-component vector of float)
-0:240        'inF0' (temp 4-component vector of float)
-0:241      distance (global float)
-0:241        'inF0' (temp 4-component vector of float)
-0:241        'inF1' (temp 4-component vector of float)
-0:242      dot-product (global float)
-0:242        'inF0' (temp 4-component vector of float)
-0:242        'inF1' (temp 4-component vector of float)
-0:243      Construct vec4 (temp float)
-0:243        Constant:
-0:243          1.000000
-0:243        component-wise multiply (temp float)
-0:243          direct index (temp float)
-0:243            'inF0' (temp 4-component vector of float)
-0:243            Constant:
-0:243              1 (const int)
-0:243          direct index (temp float)
-0:243            'inF1' (temp 4-component vector of float)
-0:243            Constant:
-0:243              1 (const int)
-0:243        direct index (temp float)
-0:243          'inF0' (temp 4-component vector of float)
-0:243          Constant:
-0:243            2 (const int)
-0:243        direct index (temp float)
-0:243          'inF1' (temp 4-component vector of float)
-0:243          Constant:
-0:243            3 (const int)
-0:247      exp (global 4-component vector of float)
-0:247        'inF0' (temp 4-component vector of float)
-0:248      exp2 (global 4-component vector of float)
-0:248        'inF0' (temp 4-component vector of float)
-0:249      face-forward (global 4-component vector of float)
-0:249        'inF0' (temp 4-component vector of float)
-0:249        'inF1' (temp 4-component vector of float)
-0:249        'inF2' (temp 4-component vector of float)
-0:250      findMSB (global int)
-0:250        Constant:
-0:250          7 (const int)
-0:251      findLSB (global int)
-0:251        Constant:
-0:251          7 (const int)
-0:252      Floor (global 4-component vector of float)
-0:252        'inF0' (temp 4-component vector of float)
-0:254      mod (global 4-component vector of float)
-0:254        'inF0' (temp 4-component vector of float)
-0:254        'inF1' (temp 4-component vector of float)
-0:255      Fraction (global 4-component vector of float)
-0:255        'inF0' (temp 4-component vector of float)
-0:256      frexp (global 4-component vector of float)
+0:256      all (global bool)
 0:256        'inF0' (temp 4-component vector of float)
-0:256        'inF1' (temp 4-component vector of float)
-0:257      fwidth (global 4-component vector of float)
+0:257      Absolute value (global 4-component vector of float)
 0:257        'inF0' (temp 4-component vector of float)
-0:258      isinf (global 4-component vector of bool)
+0:258      arc cosine (global 4-component vector of float)
 0:258        'inF0' (temp 4-component vector of float)
-0:259      isnan (global 4-component vector of bool)
+0:259      any (global bool)
 0:259        'inF0' (temp 4-component vector of float)
-0:260      ldexp (global 4-component vector of float)
+0:260      arc sine (global 4-component vector of float)
 0:260        'inF0' (temp 4-component vector of float)
-0:260        'inF1' (temp 4-component vector of float)
-0:261      length (global float)
+0:261      floatBitsToInt (global 4-component vector of int)
 0:261        'inF0' (temp 4-component vector of float)
-0:262      log (global 4-component vector of float)
+0:262      floatBitsToUint (global 4-component vector of uint)
 0:262        'inF0' (temp 4-component vector of float)
-0:263      vector-scale (temp 4-component vector of float)
-0:263        log2 (temp 4-component vector of float)
-0:263          'inF0' (temp 4-component vector of float)
-0:263        Constant:
-0:263          0.301030
-0:264      log2 (global 4-component vector of float)
-0:264        'inF0' (temp 4-component vector of float)
-0:265      max (global 4-component vector of float)
+0:263      intBitsToFloat (global 4-component vector of float)
+0:263        'inU0' (temp 4-component vector of uint)
+0:265      arc tangent (global 4-component vector of float)
 0:265        'inF0' (temp 4-component vector of float)
-0:265        'inF1' (temp 4-component vector of float)
-0:266      min (global 4-component vector of float)
+0:266      arc tangent (global 4-component vector of float)
 0:266        'inF0' (temp 4-component vector of float)
 0:266        'inF1' (temp 4-component vector of float)
-0:267      normalize (global 4-component vector of float)
+0:267      Ceiling (global 4-component vector of float)
 0:267        'inF0' (temp 4-component vector of float)
-0:268      pow (global 4-component vector of float)
+0:268      clamp (global 4-component vector of float)
 0:268        'inF0' (temp 4-component vector of float)
 0:268        'inF1' (temp 4-component vector of float)
-0:269      radians (global 4-component vector of float)
-0:269        'inF0' (temp 4-component vector of float)
-0:270      divide (temp 4-component vector of float)
-0:270        Constant:
-0:270          1.000000
+0:268        'inF2' (temp 4-component vector of float)
+0:269      Test condition and select (temp void)
+0:269        Condition
+0:269        any (temp bool)
+0:269          Compare Less Than (temp 4-component vector of bool)
+0:269            'inF0' (temp 4-component vector of float)
+0:269            Constant:
+0:269              0.000000
+0:269              0.000000
+0:269              0.000000
+0:269              0.000000
+0:269        true case
+0:269        Branch: Kill
+0:270      cosine (global 4-component vector of float)
 0:270        'inF0' (temp 4-component vector of float)
-0:271      reflect (global 4-component vector of float)
+0:271      hyp. cosine (global 4-component vector of float)
 0:271        'inF0' (temp 4-component vector of float)
-0:271        'inF1' (temp 4-component vector of float)
-0:272      refract (global 4-component vector of float)
-0:272        'inF0' (temp 4-component vector of float)
-0:272        'inF1' (temp 4-component vector of float)
-0:272        Constant:
-0:272          2.000000
-0:?       bitFieldReverse (global 4-component vector of uint)
+0:?       bitCount (global 4-component vector of uint)
 0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
+0:?           7 (const uint)
 0:?           3 (const uint)
-0:?           4 (const uint)
-0:274      roundEven (global 4-component vector of float)
+0:?           5 (const uint)
+0:?           2 (const uint)
+0:273      dPdx (global 4-component vector of float)
+0:273        'inF0' (temp 4-component vector of float)
+0:274      dPdxCoarse (global 4-component vector of float)
 0:274        'inF0' (temp 4-component vector of float)
-0:275      inverse sqrt (global 4-component vector of float)
+0:275      dPdxFine (global 4-component vector of float)
 0:275        'inF0' (temp 4-component vector of float)
-0:276      clamp (global 4-component vector of float)
+0:276      dPdy (global 4-component vector of float)
 0:276        'inF0' (temp 4-component vector of float)
-0:276        Constant:
-0:276          0.000000
-0:276        Constant:
-0:276          1.000000
-0:277      Sign (global 4-component vector of float)
+0:277      dPdyCoarse (global 4-component vector of float)
 0:277        'inF0' (temp 4-component vector of float)
-0:278      sine (global 4-component vector of float)
+0:278      dPdyFine (global 4-component vector of float)
 0:278        'inF0' (temp 4-component vector of float)
-0:279      Sequence
-0:279        move second child to first child (temp 4-component vector of float)
-0:279          'inF1' (temp 4-component vector of float)
-0:279          sine (temp 4-component vector of float)
-0:279            'inF0' (temp 4-component vector of float)
-0:279        move second child to first child (temp 4-component vector of float)
-0:279          'inF2' (temp 4-component vector of float)
-0:279          cosine (temp 4-component vector of float)
-0:279            'inF0' (temp 4-component vector of float)
-0:280      hyp. sine (global 4-component vector of float)
+0:279      degrees (global 4-component vector of float)
+0:279        'inF0' (temp 4-component vector of float)
+0:280      distance (global float)
 0:280        'inF0' (temp 4-component vector of float)
-0:281      smoothstep (global 4-component vector of float)
+0:280        'inF1' (temp 4-component vector of float)
+0:281      dot-product (global float)
 0:281        'inF0' (temp 4-component vector of float)
 0:281        'inF1' (temp 4-component vector of float)
-0:281        'inF2' (temp 4-component vector of float)
-0:282      sqrt (global 4-component vector of float)
-0:282        'inF0' (temp 4-component vector of float)
-0:283      step (global 4-component vector of float)
-0:283        'inF0' (temp 4-component vector of float)
-0:283        'inF1' (temp 4-component vector of float)
-0:284      tangent (global 4-component vector of float)
-0:284        'inF0' (temp 4-component vector of float)
-0:285      hyp. tangent (global 4-component vector of float)
-0:285        'inF0' (temp 4-component vector of float)
-0:287      trunc (global 4-component vector of float)
+0:282      Construct vec4 (temp float)
+0:282        Constant:
+0:282          1.000000
+0:282        component-wise multiply (temp float)
+0:282          direct index (temp float)
+0:282            'inF0' (temp 4-component vector of float)
+0:282            Constant:
+0:282              1 (const int)
+0:282          direct index (temp float)
+0:282            'inF1' (temp 4-component vector of float)
+0:282            Constant:
+0:282              1 (const int)
+0:282        direct index (temp float)
+0:282          'inF0' (temp 4-component vector of float)
+0:282          Constant:
+0:282            2 (const int)
+0:282        direct index (temp float)
+0:282          'inF1' (temp 4-component vector of float)
+0:282          Constant:
+0:282            3 (const int)
+0:286      exp (global 4-component vector of float)
+0:286        'inF0' (temp 4-component vector of float)
+0:287      exp2 (global 4-component vector of float)
 0:287        'inF0' (temp 4-component vector of float)
-0:290      Branch: Return with expression
+0:288      face-forward (global 4-component vector of float)
+0:288        'inF0' (temp 4-component vector of float)
+0:288        'inF1' (temp 4-component vector of float)
+0:288        'inF2' (temp 4-component vector of float)
+0:289      findMSB (global int)
+0:289        Constant:
+0:289          7 (const int)
+0:290      findLSB (global int)
+0:290        Constant:
+0:290          7 (const int)
+0:291      Floor (global 4-component vector of float)
+0:291        'inF0' (temp 4-component vector of float)
+0:293      mod (global 4-component vector of float)
+0:293        'inF0' (temp 4-component vector of float)
+0:293        'inF1' (temp 4-component vector of float)
+0:294      Fraction (global 4-component vector of float)
+0:294        'inF0' (temp 4-component vector of float)
+0:295      frexp (global 4-component vector of float)
+0:295        'inF0' (temp 4-component vector of float)
+0:295        'inF1' (temp 4-component vector of float)
+0:296      fwidth (global 4-component vector of float)
+0:296        'inF0' (temp 4-component vector of float)
+0:297      isinf (global 4-component vector of bool)
+0:297        'inF0' (temp 4-component vector of float)
+0:298      isnan (global 4-component vector of bool)
+0:298        'inF0' (temp 4-component vector of float)
+0:299      ldexp (global 4-component vector of float)
+0:299        'inF0' (temp 4-component vector of float)
+0:299        'inF1' (temp 4-component vector of float)
+0:300      length (global float)
+0:300        'inF0' (temp 4-component vector of float)
+0:301      log (global 4-component vector of float)
+0:301        'inF0' (temp 4-component vector of float)
+0:302      vector-scale (temp 4-component vector of float)
+0:302        log2 (temp 4-component vector of float)
+0:302          'inF0' (temp 4-component vector of float)
+0:302        Constant:
+0:302          0.301030
+0:303      log2 (global 4-component vector of float)
+0:303        'inF0' (temp 4-component vector of float)
+0:304      max (global 4-component vector of float)
+0:304        'inF0' (temp 4-component vector of float)
+0:304        'inF1' (temp 4-component vector of float)
+0:305      min (global 4-component vector of float)
+0:305        'inF0' (temp 4-component vector of float)
+0:305        'inF1' (temp 4-component vector of float)
+0:306      normalize (global 4-component vector of float)
+0:306        'inF0' (temp 4-component vector of float)
+0:307      pow (global 4-component vector of float)
+0:307        'inF0' (temp 4-component vector of float)
+0:307        'inF1' (temp 4-component vector of float)
+0:308      radians (global 4-component vector of float)
+0:308        'inF0' (temp 4-component vector of float)
+0:309      divide (temp 4-component vector of float)
+0:309        Constant:
+0:309          1.000000
+0:309        'inF0' (temp 4-component vector of float)
+0:310      reflect (global 4-component vector of float)
+0:310        'inF0' (temp 4-component vector of float)
+0:310        'inF1' (temp 4-component vector of float)
+0:311      refract (global 4-component vector of float)
+0:311        'inF0' (temp 4-component vector of float)
+0:311        'inF1' (temp 4-component vector of float)
+0:311        Constant:
+0:311          2.000000
+0:?       bitFieldReverse (global 4-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:?           3 (const uint)
+0:?           4 (const uint)
+0:313      roundEven (global 4-component vector of float)
+0:313        'inF0' (temp 4-component vector of float)
+0:314      inverse sqrt (global 4-component vector of float)
+0:314        'inF0' (temp 4-component vector of float)
+0:315      clamp (temp 4-component vector of float)
+0:315        'inF0' (temp 4-component vector of float)
+0:315        Constant:
+0:315          0.000000
+0:315        Constant:
+0:315          1.000000
+0:316      Sign (global 4-component vector of float)
+0:316        'inF0' (temp 4-component vector of float)
+0:317      sine (global 4-component vector of float)
+0:317        'inF0' (temp 4-component vector of float)
+0:318      Sequence
+0:318        move second child to first child (temp 4-component vector of float)
+0:318          'inF1' (temp 4-component vector of float)
+0:318          sine (temp 4-component vector of float)
+0:318            'inF0' (temp 4-component vector of float)
+0:318        move second child to first child (temp 4-component vector of float)
+0:318          'inF2' (temp 4-component vector of float)
+0:318          cosine (temp 4-component vector of float)
+0:318            'inF0' (temp 4-component vector of float)
+0:319      hyp. sine (global 4-component vector of float)
+0:319        'inF0' (temp 4-component vector of float)
+0:320      smoothstep (global 4-component vector of float)
+0:320        'inF0' (temp 4-component vector of float)
+0:320        'inF1' (temp 4-component vector of float)
+0:320        'inF2' (temp 4-component vector of float)
+0:321      sqrt (global 4-component vector of float)
+0:321        'inF0' (temp 4-component vector of float)
+0:322      step (global 4-component vector of float)
+0:322        'inF0' (temp 4-component vector of float)
+0:322        'inF1' (temp 4-component vector of float)
+0:323      tangent (global 4-component vector of float)
+0:323        'inF0' (temp 4-component vector of float)
+0:324      hyp. tangent (global 4-component vector of float)
+0:324        'inF0' (temp 4-component vector of float)
+0:326      trunc (global 4-component vector of float)
+0:326        'inF0' (temp 4-component vector of float)
+0:329      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:358  Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
-0:350    Function Parameters: 
-0:350      'inF0' (temp 2X2 matrix of float)
-0:350      'inF1' (temp 2X2 matrix of float)
-0:350      'inF2' (temp 2X2 matrix of float)
+0:402  Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
+0:394    Function Parameters: 
+0:394      'inF0' (temp 2X2 matrix of float)
+0:394      'inF1' (temp 2X2 matrix of float)
+0:394      'inF2' (temp 2X2 matrix of float)
 0:?     Sequence
-0:352      all (global bool)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      Absolute value (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      arc cosine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      any (global bool)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      arc sine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      arc tangent (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      arc tangent (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      Ceiling (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      Test condition and select (temp void)
-0:352        Condition
-0:352        any (temp bool)
-0:352          Compare Less Than (temp 2X2 matrix of bool)
-0:352            'inF0' (temp 2X2 matrix of float)
-0:352            Constant:
-0:352              0.000000
-0:352              0.000000
-0:352              0.000000
-0:352              0.000000
-0:352        true case
-0:352        Branch: Kill
-0:352      clamp (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352        'inF2' (temp 2X2 matrix of float)
-0:352      cosine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      hyp. cosine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdx (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdxCoarse (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdxFine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdy (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdyCoarse (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdyFine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      degrees (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      determinant (global float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      exp (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      exp2 (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      findMSB (global int)
-0:352        Constant:
-0:352          7 (const int)
-0:352      findLSB (global int)
-0:352        Constant:
-0:352          7 (const int)
-0:352      Floor (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      mod (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      Fraction (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      frexp (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      fwidth (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      ldexp (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      log (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      matrix-scale (temp 2X2 matrix of float)
-0:352        log2 (temp 2X2 matrix of float)
-0:352          'inF0' (temp 2X2 matrix of float)
-0:352        Constant:
-0:352          0.301030
-0:352      log2 (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      max (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      min (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      pow (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      radians (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      roundEven (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      inverse sqrt (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      clamp (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        Constant:
-0:352          0.000000
-0:352        Constant:
-0:352          1.000000
-0:352      Sign (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      sine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      Sequence
-0:352        move second child to first child (temp 2X2 matrix of float)
-0:352          'inF1' (temp 2X2 matrix of float)
-0:352          sine (temp 2X2 matrix of float)
-0:352            'inF0' (temp 2X2 matrix of float)
-0:352        move second child to first child (temp 2X2 matrix of float)
-0:352          'inF2' (temp 2X2 matrix of float)
-0:352          cosine (temp 2X2 matrix of float)
-0:352            'inF0' (temp 2X2 matrix of float)
-0:352      hyp. sine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      smoothstep (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352        'inF2' (temp 2X2 matrix of float)
-0:352      sqrt (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      step (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      tangent (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      hyp. tangent (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      transpose (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      trunc (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:355      Branch: Return with expression
+0:396      all (global bool)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      Absolute value (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      arc cosine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      any (global bool)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      arc sine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      arc tangent (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      arc tangent (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      Ceiling (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      Test condition and select (temp void)
+0:396        Condition
+0:396        any (temp bool)
+0:396          Compare Less Than (temp 2X2 matrix of bool)
+0:396            'inF0' (temp 2X2 matrix of float)
+0:396            Constant:
+0:396              0.000000
+0:396              0.000000
+0:396              0.000000
+0:396              0.000000
+0:396        true case
+0:396        Branch: Kill
+0:396      clamp (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396        'inF2' (temp 2X2 matrix of float)
+0:396      cosine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      hyp. cosine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdx (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdxCoarse (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdxFine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdy (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdyCoarse (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdyFine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      degrees (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      determinant (global float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      exp (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      exp2 (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      findMSB (global int)
+0:396        Constant:
+0:396          7 (const int)
+0:396      findLSB (global int)
+0:396        Constant:
+0:396          7 (const int)
+0:396      Floor (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      mod (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      Fraction (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      frexp (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      fwidth (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      ldexp (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      log (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      matrix-scale (temp 2X2 matrix of float)
+0:396        log2 (temp 2X2 matrix of float)
+0:396          'inF0' (temp 2X2 matrix of float)
+0:396        Constant:
+0:396          0.301030
+0:396      log2 (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      max (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      min (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      pow (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      radians (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      roundEven (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      inverse sqrt (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      clamp (temp 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        Constant:
+0:396          0.000000
+0:396        Constant:
+0:396          1.000000
+0:396      Sign (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      sine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      Sequence
+0:396        move second child to first child (temp 2X2 matrix of float)
+0:396          'inF1' (temp 2X2 matrix of float)
+0:396          sine (temp 2X2 matrix of float)
+0:396            'inF0' (temp 2X2 matrix of float)
+0:396        move second child to first child (temp 2X2 matrix of float)
+0:396          'inF2' (temp 2X2 matrix of float)
+0:396          cosine (temp 2X2 matrix of float)
+0:396            'inF0' (temp 2X2 matrix of float)
+0:396      hyp. sine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      smoothstep (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396        'inF2' (temp 2X2 matrix of float)
+0:396      sqrt (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      step (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      tangent (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      hyp. tangent (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      transpose (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      trunc (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:399      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:367  Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
-0:359    Function Parameters: 
-0:359      'inF0' (temp 3X3 matrix of float)
-0:359      'inF1' (temp 3X3 matrix of float)
-0:359      'inF2' (temp 3X3 matrix of float)
+0:411  Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
+0:403    Function Parameters: 
+0:403      'inF0' (temp 3X3 matrix of float)
+0:403      'inF1' (temp 3X3 matrix of float)
+0:403      'inF2' (temp 3X3 matrix of float)
 0:?     Sequence
-0:361      all (global bool)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      Absolute value (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      arc cosine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      any (global bool)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      arc sine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      arc tangent (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      arc tangent (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      Ceiling (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      Test condition and select (temp void)
-0:361        Condition
-0:361        any (temp bool)
-0:361          Compare Less Than (temp 3X3 matrix of bool)
-0:361            'inF0' (temp 3X3 matrix of float)
-0:361            Constant:
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361        true case
-0:361        Branch: Kill
-0:361      clamp (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361        'inF2' (temp 3X3 matrix of float)
-0:361      cosine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      hyp. cosine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdx (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdxCoarse (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdxFine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdy (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdyCoarse (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdyFine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      degrees (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      determinant (global float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      exp (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      exp2 (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      findMSB (global int)
-0:361        Constant:
-0:361          7 (const int)
-0:361      findLSB (global int)
-0:361        Constant:
-0:361          7 (const int)
-0:361      Floor (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      mod (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      Fraction (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      frexp (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      fwidth (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      ldexp (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      log (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      matrix-scale (temp 3X3 matrix of float)
-0:361        log2 (temp 3X3 matrix of float)
-0:361          'inF0' (temp 3X3 matrix of float)
-0:361        Constant:
-0:361          0.301030
-0:361      log2 (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      max (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      min (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      pow (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      radians (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      roundEven (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      inverse sqrt (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      clamp (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        Constant:
-0:361          0.000000
-0:361        Constant:
-0:361          1.000000
-0:361      Sign (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      sine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      Sequence
-0:361        move second child to first child (temp 3X3 matrix of float)
-0:361          'inF1' (temp 3X3 matrix of float)
-0:361          sine (temp 3X3 matrix of float)
-0:361            'inF0' (temp 3X3 matrix of float)
-0:361        move second child to first child (temp 3X3 matrix of float)
-0:361          'inF2' (temp 3X3 matrix of float)
-0:361          cosine (temp 3X3 matrix of float)
-0:361            'inF0' (temp 3X3 matrix of float)
-0:361      hyp. sine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      smoothstep (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361        'inF2' (temp 3X3 matrix of float)
-0:361      sqrt (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      step (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      tangent (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      hyp. tangent (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      transpose (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      trunc (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:364      Branch: Return with expression
+0:405      all (global bool)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      Absolute value (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      arc cosine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      any (global bool)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      arc sine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      arc tangent (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      arc tangent (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      Ceiling (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      Test condition and select (temp void)
+0:405        Condition
+0:405        any (temp bool)
+0:405          Compare Less Than (temp 3X3 matrix of bool)
+0:405            'inF0' (temp 3X3 matrix of float)
+0:405            Constant:
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405        true case
+0:405        Branch: Kill
+0:405      clamp (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405        'inF2' (temp 3X3 matrix of float)
+0:405      cosine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      hyp. cosine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdx (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdxCoarse (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdxFine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdy (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdyCoarse (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdyFine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      degrees (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      determinant (global float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      exp (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      exp2 (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      findMSB (global int)
+0:405        Constant:
+0:405          7 (const int)
+0:405      findLSB (global int)
+0:405        Constant:
+0:405          7 (const int)
+0:405      Floor (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      mod (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      Fraction (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      frexp (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      fwidth (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      ldexp (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      log (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      matrix-scale (temp 3X3 matrix of float)
+0:405        log2 (temp 3X3 matrix of float)
+0:405          'inF0' (temp 3X3 matrix of float)
+0:405        Constant:
+0:405          0.301030
+0:405      log2 (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      max (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      min (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      pow (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      radians (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      roundEven (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      inverse sqrt (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      clamp (temp 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        Constant:
+0:405          0.000000
+0:405        Constant:
+0:405          1.000000
+0:405      Sign (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      sine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      Sequence
+0:405        move second child to first child (temp 3X3 matrix of float)
+0:405          'inF1' (temp 3X3 matrix of float)
+0:405          sine (temp 3X3 matrix of float)
+0:405            'inF0' (temp 3X3 matrix of float)
+0:405        move second child to first child (temp 3X3 matrix of float)
+0:405          'inF2' (temp 3X3 matrix of float)
+0:405          cosine (temp 3X3 matrix of float)
+0:405            'inF0' (temp 3X3 matrix of float)
+0:405      hyp. sine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      smoothstep (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405        'inF2' (temp 3X3 matrix of float)
+0:405      sqrt (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      step (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      tangent (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      hyp. tangent (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      transpose (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      trunc (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:408      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -1061,165 +1093,165 @@ gl_FragCoord origin is upper left
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:388  Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
-0:368    Function Parameters: 
-0:368      'inF0' (temp 4X4 matrix of float)
-0:368      'inF1' (temp 4X4 matrix of float)
-0:368      'inF2' (temp 4X4 matrix of float)
+0:432  Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
+0:412    Function Parameters: 
+0:412      'inF0' (temp 4X4 matrix of float)
+0:412      'inF1' (temp 4X4 matrix of float)
+0:412      'inF2' (temp 4X4 matrix of float)
 0:?     Sequence
-0:370      all (global bool)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      Absolute value (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      arc cosine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      any (global bool)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      arc sine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      arc tangent (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      arc tangent (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      Ceiling (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      Test condition and select (temp void)
-0:370        Condition
-0:370        any (temp bool)
-0:370          Compare Less Than (temp 4X4 matrix of bool)
-0:370            'inF0' (temp 4X4 matrix of float)
-0:370            Constant:
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370        true case
-0:370        Branch: Kill
-0:370      clamp (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370        'inF2' (temp 4X4 matrix of float)
-0:370      cosine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      hyp. cosine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdx (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdxCoarse (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdxFine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdy (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdyCoarse (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdyFine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      degrees (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      determinant (global float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      exp (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      exp2 (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      findMSB (global int)
-0:370        Constant:
-0:370          7 (const int)
-0:370      findLSB (global int)
-0:370        Constant:
-0:370          7 (const int)
-0:370      Floor (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      mod (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      Fraction (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      frexp (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      fwidth (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      ldexp (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      log (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      matrix-scale (temp 4X4 matrix of float)
-0:370        log2 (temp 4X4 matrix of float)
-0:370          'inF0' (temp 4X4 matrix of float)
-0:370        Constant:
-0:370          0.301030
-0:370      log2 (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      max (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      min (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      pow (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      radians (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      roundEven (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      inverse sqrt (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      clamp (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        Constant:
-0:370          0.000000
-0:370        Constant:
-0:370          1.000000
-0:370      Sign (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      sine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      Sequence
-0:370        move second child to first child (temp 4X4 matrix of float)
-0:370          'inF1' (temp 4X4 matrix of float)
-0:370          sine (temp 4X4 matrix of float)
-0:370            'inF0' (temp 4X4 matrix of float)
-0:370        move second child to first child (temp 4X4 matrix of float)
-0:370          'inF2' (temp 4X4 matrix of float)
-0:370          cosine (temp 4X4 matrix of float)
-0:370            'inF0' (temp 4X4 matrix of float)
-0:370      hyp. sine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      smoothstep (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370        'inF2' (temp 4X4 matrix of float)
-0:370      sqrt (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      step (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      tangent (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      hyp. tangent (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      transpose (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      trunc (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:373      Branch: Return with expression
+0:414      all (global bool)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      Absolute value (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      arc cosine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      any (global bool)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      arc sine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      arc tangent (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      arc tangent (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      Ceiling (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      Test condition and select (temp void)
+0:414        Condition
+0:414        any (temp bool)
+0:414          Compare Less Than (temp 4X4 matrix of bool)
+0:414            'inF0' (temp 4X4 matrix of float)
+0:414            Constant:
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414        true case
+0:414        Branch: Kill
+0:414      clamp (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414        'inF2' (temp 4X4 matrix of float)
+0:414      cosine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      hyp. cosine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdx (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdxCoarse (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdxFine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdy (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdyCoarse (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdyFine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      degrees (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      determinant (global float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      exp (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      exp2 (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      findMSB (global int)
+0:414        Constant:
+0:414          7 (const int)
+0:414      findLSB (global int)
+0:414        Constant:
+0:414          7 (const int)
+0:414      Floor (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      mod (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      Fraction (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      frexp (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      fwidth (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      ldexp (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      log (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      matrix-scale (temp 4X4 matrix of float)
+0:414        log2 (temp 4X4 matrix of float)
+0:414          'inF0' (temp 4X4 matrix of float)
+0:414        Constant:
+0:414          0.301030
+0:414      log2 (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      max (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      min (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      pow (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      radians (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      roundEven (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      inverse sqrt (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      clamp (temp 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        Constant:
+0:414          0.000000
+0:414        Constant:
+0:414          1.000000
+0:414      Sign (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      sine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      Sequence
+0:414        move second child to first child (temp 4X4 matrix of float)
+0:414          'inF1' (temp 4X4 matrix of float)
+0:414          sine (temp 4X4 matrix of float)
+0:414            'inF0' (temp 4X4 matrix of float)
+0:414        move second child to first child (temp 4X4 matrix of float)
+0:414          'inF2' (temp 4X4 matrix of float)
+0:414          cosine (temp 4X4 matrix of float)
+0:414            'inF0' (temp 4X4 matrix of float)
+0:414      hyp. sine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      smoothstep (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414        'inF2' (temp 4X4 matrix of float)
+0:414      sqrt (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      step (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      tangent (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      hyp. tangent (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      transpose (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      trunc (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:417      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
@@ -1237,169 +1269,181 @@ gl_FragCoord origin is upper left
 0:?           4.000000
 0:?           4.000000
 0:?           4.000000
-0:395  Function Definition: TestGenMul(f1;f1;vf2;vf2;mf22;mf22; (temp void)
-0:391    Function Parameters: 
-0:391      'inF0' (temp float)
-0:391      'inF1' (temp float)
-0:391      'inFV0' (temp 2-component vector of float)
-0:391      'inFV1' (temp 2-component vector of float)
-0:391      'inFM0' (temp 2X2 matrix of float)
-0:391      'inFM1' (temp 2X2 matrix of float)
+0:439  Function Definition: TestGenMul(f1;f1;vf2;vf2;mf22;mf22; (temp void)
+0:435    Function Parameters: 
+0:435      'inF0' (temp float)
+0:435      'inF1' (temp float)
+0:435      'inFV0' (temp 2-component vector of float)
+0:435      'inFV1' (temp 2-component vector of float)
+0:435      'inFM0' (temp 2X2 matrix of float)
+0:435      'inFM1' (temp 2X2 matrix of float)
 0:?     Sequence
-0:392      move second child to first child (temp float)
-0:392        'r0' (temp float)
-0:392        component-wise multiply (temp float)
-0:392          'inF0' (temp float)
-0:392          'inF1' (temp float)
-0:392      move second child to first child (temp 2-component vector of float)
-0:392        'r1' (temp 2-component vector of float)
-0:392        vector-scale (temp 2-component vector of float)
-0:392          'inFV0' (temp 2-component vector of float)
-0:392          'inF0' (temp float)
-0:392      move second child to first child (temp 2-component vector of float)
-0:392        'r2' (temp 2-component vector of float)
-0:392        vector-scale (temp 2-component vector of float)
-0:392          'inF0' (temp float)
-0:392          'inFV0' (temp 2-component vector of float)
-0:392      move second child to first child (temp float)
-0:392        'r3' (temp float)
-0:392        dot-product (global float)
-0:392          'inFV0' (temp 2-component vector of float)
-0:392          'inFV1' (temp 2-component vector of float)
-0:392      move second child to first child (temp 2-component vector of float)
-0:392        'r4' (temp 2-component vector of float)
-0:392        matrix-times-vector (temp 2-component vector of float)
-0:392          'inFM0' (temp 2X2 matrix of float)
-0:392          'inFV0' (temp 2-component vector of float)
-0:392      move second child to first child (temp 2-component vector of float)
-0:392        'r5' (temp 2-component vector of float)
-0:392        vector-times-matrix (temp 2-component vector of float)
-0:392          'inFV0' (temp 2-component vector of float)
-0:392          'inFM0' (temp 2X2 matrix of float)
-0:392      move second child to first child (temp 2X2 matrix of float)
-0:392        'r6' (temp 2X2 matrix of float)
-0:392        matrix-scale (temp 2X2 matrix of float)
-0:392          'inFM0' (temp 2X2 matrix of float)
-0:392          'inF0' (temp float)
-0:392      move second child to first child (temp 2X2 matrix of float)
-0:392        'r7' (temp 2X2 matrix of float)
-0:392        matrix-scale (temp 2X2 matrix of float)
-0:392          'inF0' (temp float)
-0:392          'inFM0' (temp 2X2 matrix of float)
-0:392      move second child to first child (temp 2X2 matrix of float)
-0:392        'r8' (temp 2X2 matrix of float)
-0:392        matrix-multiply (temp 2X2 matrix of float)
-0:392          'inFM0' (temp 2X2 matrix of float)
-0:392          'inFM1' (temp 2X2 matrix of float)
-0:402  Function Definition: TestGenMul(f1;f1;vf3;vf3;mf33;mf33; (temp void)
-0:398    Function Parameters: 
-0:398      'inF0' (temp float)
-0:398      'inF1' (temp float)
-0:398      'inFV0' (temp 3-component vector of float)
-0:398      'inFV1' (temp 3-component vector of float)
-0:398      'inFM0' (temp 3X3 matrix of float)
-0:398      'inFM1' (temp 3X3 matrix of float)
+0:436      move second child to first child (temp float)
+0:436        'r0' (temp float)
+0:436        component-wise multiply (temp float)
+0:436          'inF0' (temp float)
+0:436          'inF1' (temp float)
+0:436      move second child to first child (temp 2-component vector of float)
+0:436        'r1' (temp 2-component vector of float)
+0:436        vector-scale (temp 2-component vector of float)
+0:436          'inFV0' (temp 2-component vector of float)
+0:436          'inF0' (temp float)
+0:436      move second child to first child (temp 2-component vector of float)
+0:436        'r2' (temp 2-component vector of float)
+0:436        vector-scale (temp 2-component vector of float)
+0:436          'inF0' (temp float)
+0:436          'inFV0' (temp 2-component vector of float)
+0:436      move second child to first child (temp float)
+0:436        'r3' (temp float)
+0:436        dot-product (global float)
+0:436          'inFV0' (temp 2-component vector of float)
+0:436          'inFV1' (temp 2-component vector of float)
+0:436      move second child to first child (temp 2-component vector of float)
+0:436        'r4' (temp 2-component vector of float)
+0:436        matrix-times-vector (temp 2-component vector of float)
+0:436          'inFM0' (temp 2X2 matrix of float)
+0:436          'inFV0' (temp 2-component vector of float)
+0:436      move second child to first child (temp 2-component vector of float)
+0:436        'r5' (temp 2-component vector of float)
+0:436        vector-times-matrix (temp 2-component vector of float)
+0:436          'inFV0' (temp 2-component vector of float)
+0:436          'inFM0' (temp 2X2 matrix of float)
+0:436      move second child to first child (temp 2X2 matrix of float)
+0:436        'r6' (temp 2X2 matrix of float)
+0:436        matrix-scale (temp 2X2 matrix of float)
+0:436          'inFM0' (temp 2X2 matrix of float)
+0:436          'inF0' (temp float)
+0:436      move second child to first child (temp 2X2 matrix of float)
+0:436        'r7' (temp 2X2 matrix of float)
+0:436        matrix-scale (temp 2X2 matrix of float)
+0:436          'inF0' (temp float)
+0:436          'inFM0' (temp 2X2 matrix of float)
+0:436      move second child to first child (temp 2X2 matrix of float)
+0:436        'r8' (temp 2X2 matrix of float)
+0:436        matrix-multiply (temp 2X2 matrix of float)
+0:436          'inFM0' (temp 2X2 matrix of float)
+0:436          'inFM1' (temp 2X2 matrix of float)
+0:446  Function Definition: TestGenMul(f1;f1;vf3;vf3;mf33;mf33; (temp void)
+0:442    Function Parameters: 
+0:442      'inF0' (temp float)
+0:442      'inF1' (temp float)
+0:442      'inFV0' (temp 3-component vector of float)
+0:442      'inFV1' (temp 3-component vector of float)
+0:442      'inFM0' (temp 3X3 matrix of float)
+0:442      'inFM1' (temp 3X3 matrix of float)
 0:?     Sequence
-0:399      move second child to first child (temp float)
-0:399        'r0' (temp float)
-0:399        component-wise multiply (temp float)
-0:399          'inF0' (temp float)
-0:399          'inF1' (temp float)
-0:399      move second child to first child (temp 3-component vector of float)
-0:399        'r1' (temp 3-component vector of float)
-0:399        vector-scale (temp 3-component vector of float)
-0:399          'inFV0' (temp 3-component vector of float)
-0:399          'inF0' (temp float)
-0:399      move second child to first child (temp 3-component vector of float)
-0:399        'r2' (temp 3-component vector of float)
-0:399        vector-scale (temp 3-component vector of float)
-0:399          'inF0' (temp float)
-0:399          'inFV0' (temp 3-component vector of float)
-0:399      move second child to first child (temp float)
-0:399        'r3' (temp float)
-0:399        dot-product (global float)
-0:399          'inFV0' (temp 3-component vector of float)
-0:399          'inFV1' (temp 3-component vector of float)
-0:399      move second child to first child (temp 3-component vector of float)
-0:399        'r4' (temp 3-component vector of float)
-0:399        matrix-times-vector (temp 3-component vector of float)
-0:399          'inFM0' (temp 3X3 matrix of float)
-0:399          'inFV0' (temp 3-component vector of float)
-0:399      move second child to first child (temp 3-component vector of float)
-0:399        'r5' (temp 3-component vector of float)
-0:399        vector-times-matrix (temp 3-component vector of float)
-0:399          'inFV0' (temp 3-component vector of float)
-0:399          'inFM0' (temp 3X3 matrix of float)
-0:399      move second child to first child (temp 3X3 matrix of float)
-0:399        'r6' (temp 3X3 matrix of float)
-0:399        matrix-scale (temp 3X3 matrix of float)
-0:399          'inFM0' (temp 3X3 matrix of float)
-0:399          'inF0' (temp float)
-0:399      move second child to first child (temp 3X3 matrix of float)
-0:399        'r7' (temp 3X3 matrix of float)
-0:399        matrix-scale (temp 3X3 matrix of float)
-0:399          'inF0' (temp float)
-0:399          'inFM0' (temp 3X3 matrix of float)
-0:399      move second child to first child (temp 3X3 matrix of float)
-0:399        'r8' (temp 3X3 matrix of float)
-0:399        matrix-multiply (temp 3X3 matrix of float)
-0:399          'inFM0' (temp 3X3 matrix of float)
-0:399          'inFM1' (temp 3X3 matrix of float)
-0:408  Function Definition: TestGenMul(f1;f1;vf4;vf4;mf44;mf44; (temp void)
-0:405    Function Parameters: 
-0:405      'inF0' (temp float)
-0:405      'inF1' (temp float)
-0:405      'inFV0' (temp 4-component vector of float)
-0:405      'inFV1' (temp 4-component vector of float)
-0:405      'inFM0' (temp 4X4 matrix of float)
-0:405      'inFM1' (temp 4X4 matrix of float)
+0:443      move second child to first child (temp float)
+0:443        'r0' (temp float)
+0:443        component-wise multiply (temp float)
+0:443          'inF0' (temp float)
+0:443          'inF1' (temp float)
+0:443      move second child to first child (temp 3-component vector of float)
+0:443        'r1' (temp 3-component vector of float)
+0:443        vector-scale (temp 3-component vector of float)
+0:443          'inFV0' (temp 3-component vector of float)
+0:443          'inF0' (temp float)
+0:443      move second child to first child (temp 3-component vector of float)
+0:443        'r2' (temp 3-component vector of float)
+0:443        vector-scale (temp 3-component vector of float)
+0:443          'inF0' (temp float)
+0:443          'inFV0' (temp 3-component vector of float)
+0:443      move second child to first child (temp float)
+0:443        'r3' (temp float)
+0:443        dot-product (global float)
+0:443          'inFV0' (temp 3-component vector of float)
+0:443          'inFV1' (temp 3-component vector of float)
+0:443      move second child to first child (temp 3-component vector of float)
+0:443        'r4' (temp 3-component vector of float)
+0:443        matrix-times-vector (temp 3-component vector of float)
+0:443          'inFM0' (temp 3X3 matrix of float)
+0:443          'inFV0' (temp 3-component vector of float)
+0:443      move second child to first child (temp 3-component vector of float)
+0:443        'r5' (temp 3-component vector of float)
+0:443        vector-times-matrix (temp 3-component vector of float)
+0:443          'inFV0' (temp 3-component vector of float)
+0:443          'inFM0' (temp 3X3 matrix of float)
+0:443      move second child to first child (temp 3X3 matrix of float)
+0:443        'r6' (temp 3X3 matrix of float)
+0:443        matrix-scale (temp 3X3 matrix of float)
+0:443          'inFM0' (temp 3X3 matrix of float)
+0:443          'inF0' (temp float)
+0:443      move second child to first child (temp 3X3 matrix of float)
+0:443        'r7' (temp 3X3 matrix of float)
+0:443        matrix-scale (temp 3X3 matrix of float)
+0:443          'inF0' (temp float)
+0:443          'inFM0' (temp 3X3 matrix of float)
+0:443      move second child to first child (temp 3X3 matrix of float)
+0:443        'r8' (temp 3X3 matrix of float)
+0:443        matrix-multiply (temp 3X3 matrix of float)
+0:443          'inFM0' (temp 3X3 matrix of float)
+0:443          'inFM1' (temp 3X3 matrix of float)
+0:452  Function Definition: TestGenMul(f1;f1;vf4;vf4;mf44;mf44; (temp void)
+0:449    Function Parameters: 
+0:449      'inF0' (temp float)
+0:449      'inF1' (temp float)
+0:449      'inFV0' (temp 4-component vector of float)
+0:449      'inFV1' (temp 4-component vector of float)
+0:449      'inFM0' (temp 4X4 matrix of float)
+0:449      'inFM1' (temp 4X4 matrix of float)
 0:?     Sequence
-0:406      move second child to first child (temp float)
-0:406        'r0' (temp float)
-0:406        component-wise multiply (temp float)
-0:406          'inF0' (temp float)
-0:406          'inF1' (temp float)
-0:406      move second child to first child (temp 4-component vector of float)
-0:406        'r1' (temp 4-component vector of float)
-0:406        vector-scale (temp 4-component vector of float)
-0:406          'inFV0' (temp 4-component vector of float)
-0:406          'inF0' (temp float)
-0:406      move second child to first child (temp 4-component vector of float)
-0:406        'r2' (temp 4-component vector of float)
-0:406        vector-scale (temp 4-component vector of float)
-0:406          'inF0' (temp float)
-0:406          'inFV0' (temp 4-component vector of float)
-0:406      move second child to first child (temp float)
-0:406        'r3' (temp float)
-0:406        dot-product (global float)
-0:406          'inFV0' (temp 4-component vector of float)
-0:406          'inFV1' (temp 4-component vector of float)
-0:406      move second child to first child (temp 4-component vector of float)
-0:406        'r4' (temp 4-component vector of float)
-0:406        matrix-times-vector (temp 4-component vector of float)
-0:406          'inFM0' (temp 4X4 matrix of float)
-0:406          'inFV0' (temp 4-component vector of float)
-0:406      move second child to first child (temp 4-component vector of float)
-0:406        'r5' (temp 4-component vector of float)
-0:406        vector-times-matrix (temp 4-component vector of float)
-0:406          'inFV0' (temp 4-component vector of float)
-0:406          'inFM0' (temp 4X4 matrix of float)
-0:406      move second child to first child (temp 4X4 matrix of float)
-0:406        'r6' (temp 4X4 matrix of float)
-0:406        matrix-scale (temp 4X4 matrix of float)
-0:406          'inFM0' (temp 4X4 matrix of float)
-0:406          'inF0' (temp float)
-0:406      move second child to first child (temp 4X4 matrix of float)
-0:406        'r7' (temp 4X4 matrix of float)
-0:406        matrix-scale (temp 4X4 matrix of float)
-0:406          'inF0' (temp float)
-0:406          'inFM0' (temp 4X4 matrix of float)
-0:406      move second child to first child (temp 4X4 matrix of float)
-0:406        'r8' (temp 4X4 matrix of float)
-0:406        matrix-multiply (temp 4X4 matrix of float)
-0:406          'inFM0' (temp 4X4 matrix of float)
-0:406          'inFM1' (temp 4X4 matrix of float)
+0:450      move second child to first child (temp float)
+0:450        'r0' (temp float)
+0:450        component-wise multiply (temp float)
+0:450          'inF0' (temp float)
+0:450          'inF1' (temp float)
+0:450      move second child to first child (temp 4-component vector of float)
+0:450        'r1' (temp 4-component vector of float)
+0:450        vector-scale (temp 4-component vector of float)
+0:450          'inFV0' (temp 4-component vector of float)
+0:450          'inF0' (temp float)
+0:450      move second child to first child (temp 4-component vector of float)
+0:450        'r2' (temp 4-component vector of float)
+0:450        vector-scale (temp 4-component vector of float)
+0:450          'inF0' (temp float)
+0:450          'inFV0' (temp 4-component vector of float)
+0:450      move second child to first child (temp float)
+0:450        'r3' (temp float)
+0:450        dot-product (global float)
+0:450          'inFV0' (temp 4-component vector of float)
+0:450          'inFV1' (temp 4-component vector of float)
+0:450      move second child to first child (temp 4-component vector of float)
+0:450        'r4' (temp 4-component vector of float)
+0:450        matrix-times-vector (temp 4-component vector of float)
+0:450          'inFM0' (temp 4X4 matrix of float)
+0:450          'inFV0' (temp 4-component vector of float)
+0:450      move second child to first child (temp 4-component vector of float)
+0:450        'r5' (temp 4-component vector of float)
+0:450        vector-times-matrix (temp 4-component vector of float)
+0:450          'inFV0' (temp 4-component vector of float)
+0:450          'inFM0' (temp 4X4 matrix of float)
+0:450      move second child to first child (temp 4X4 matrix of float)
+0:450        'r6' (temp 4X4 matrix of float)
+0:450        matrix-scale (temp 4X4 matrix of float)
+0:450          'inFM0' (temp 4X4 matrix of float)
+0:450          'inF0' (temp float)
+0:450      move second child to first child (temp 4X4 matrix of float)
+0:450        'r7' (temp 4X4 matrix of float)
+0:450        matrix-scale (temp 4X4 matrix of float)
+0:450          'inF0' (temp float)
+0:450          'inFM0' (temp 4X4 matrix of float)
+0:450      move second child to first child (temp 4X4 matrix of float)
+0:450        'r8' (temp 4X4 matrix of float)
+0:450        matrix-multiply (temp 4X4 matrix of float)
+0:450          'inFM0' (temp 4X4 matrix of float)
+0:450          'inFM1' (temp 4X4 matrix of float)
 0:?   Linker Objects
+0:?     'gs_ua' (temp uint)
+0:?     'gs_ub' (temp uint)
+0:?     'gs_uc' (temp uint)
+0:?     'gs_ua2' (temp 2-component vector of uint)
+0:?     'gs_ub2' (temp 2-component vector of uint)
+0:?     'gs_uc2' (temp 2-component vector of uint)
+0:?     'gs_ua3' (temp 3-component vector of uint)
+0:?     'gs_ub3' (temp 3-component vector of uint)
+0:?     'gs_uc3' (temp 3-component vector of uint)
+0:?     'gs_ua4' (temp 4-component vector of uint)
+0:?     'gs_ub4' (temp 4-component vector of uint)
+0:?     'gs_uc4' (temp 4-component vector of uint)
 
 
 Linked fragment stage:
@@ -1408,1055 +1452,1087 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:66  Function Definition: PixelShaderFunction(f1;f1;f1; (temp float)
-0:2    Function Parameters: 
-0:2      'inF0' (temp float)
-0:2      'inF1' (temp float)
-0:2      'inF2' (temp float)
+0:87  Function Definition: PixelShaderFunction(f1;f1;f1;u1;u1; (temp float)
+0:17    Function Parameters: 
+0:17      'inF0' (temp float)
+0:17      'inF1' (temp float)
+0:17      'inF2' (temp float)
+0:17      'inU0' (temp uint)
+0:17      'inU1' (temp uint)
 0:?     Sequence
-0:3      all (global bool)
-0:3        'inF0' (temp float)
-0:4      Absolute value (global float)
-0:4        'inF0' (temp float)
-0:5      arc cosine (global float)
-0:5        'inF0' (temp float)
-0:6      any (global bool)
-0:6        'inF0' (temp float)
-0:7      arc sine (global float)
-0:7        'inF0' (temp float)
-0:8      arc tangent (global float)
-0:8        'inF0' (temp float)
-0:9      arc tangent (global float)
-0:9        'inF0' (temp float)
-0:9        'inF1' (temp float)
-0:10      Ceiling (global float)
-0:10        'inF0' (temp float)
-0:11      clamp (global float)
-0:11        'inF0' (temp float)
-0:11        'inF1' (temp float)
-0:11        'inF2' (temp float)
-0:12      Test condition and select (temp void)
-0:12        Condition
-0:12        Compare Less Than (temp bool)
-0:12          'inF0' (temp float)
-0:12          Constant:
-0:12            0.000000
-0:12        true case
-0:12        Branch: Kill
-0:13      cosine (global float)
-0:13        'inF0' (temp float)
-0:14      hyp. cosine (global float)
-0:14        'inF0' (temp float)
-0:15      bitCount (global uint)
-0:15        Constant:
-0:15          7 (const uint)
-0:16      dPdx (global float)
-0:16        'inF0' (temp float)
-0:17      dPdxCoarse (global float)
-0:17        'inF0' (temp float)
-0:18      dPdxFine (global float)
-0:18        'inF0' (temp float)
-0:19      dPdy (global float)
-0:19        'inF0' (temp float)
-0:20      dPdyCoarse (global float)
+0:20      all (global bool)
 0:20        'inF0' (temp float)
-0:21      dPdyFine (global float)
+0:21      Absolute value (global float)
 0:21        'inF0' (temp float)
-0:22      degrees (global float)
+0:22      arc cosine (global float)
 0:22        'inF0' (temp float)
-0:26      exp (global float)
+0:23      any (global bool)
+0:23        'inF0' (temp float)
+0:24      arc sine (global float)
+0:24        'inF0' (temp float)
+0:25      floatBitsToInt (global int)
+0:25        'inF0' (temp float)
+0:26      floatBitsToUint (global uint)
 0:26        'inF0' (temp float)
-0:27      exp2 (global float)
-0:27        'inF0' (temp float)
-0:28      findMSB (global int)
-0:28        Constant:
-0:28          7 (const int)
-0:29      findLSB (global int)
-0:29        Constant:
-0:29          7 (const int)
-0:30      Floor (global float)
+0:27      intBitsToFloat (global float)
+0:27        'inU0' (temp uint)
+0:29      arc tangent (global float)
+0:29        'inF0' (temp float)
+0:30      arc tangent (global float)
 0:30        'inF0' (temp float)
-0:32      mod (global float)
+0:30        'inF1' (temp float)
+0:31      Ceiling (global float)
+0:31        'inF0' (temp float)
+0:32      clamp (global float)
 0:32        'inF0' (temp float)
 0:32        'inF1' (temp float)
-0:33      Fraction (global float)
-0:33        'inF0' (temp float)
-0:34      frexp (global float)
+0:32        'inF2' (temp float)
+0:33      Test condition and select (temp void)
+0:33        Condition
+0:33        Compare Less Than (temp bool)
+0:33          'inF0' (temp float)
+0:33          Constant:
+0:33            0.000000
+0:33        true case
+0:33        Branch: Kill
+0:34      cosine (global float)
 0:34        'inF0' (temp float)
-0:34        'inF1' (temp float)
-0:35      fwidth (global float)
+0:35      hyp. cosine (global float)
 0:35        'inF0' (temp float)
-0:36      isinf (global bool)
-0:36        'inF0' (temp float)
-0:37      isnan (global bool)
+0:36      bitCount (global uint)
+0:36        Constant:
+0:36          7 (const uint)
+0:37      dPdx (global float)
 0:37        'inF0' (temp float)
-0:38      ldexp (global float)
+0:38      dPdxCoarse (global float)
 0:38        'inF0' (temp float)
-0:38        'inF1' (temp float)
-0:39      log (global float)
+0:39      dPdxFine (global float)
 0:39        'inF0' (temp float)
-0:40      component-wise multiply (temp float)
-0:40        log2 (temp float)
-0:40          'inF0' (temp float)
-0:40        Constant:
-0:40          0.301030
-0:41      log2 (global float)
+0:40      dPdy (global float)
+0:40        'inF0' (temp float)
+0:41      dPdyCoarse (global float)
 0:41        'inF0' (temp float)
-0:42      max (global float)
+0:42      dPdyFine (global float)
 0:42        'inF0' (temp float)
-0:42        'inF1' (temp float)
-0:43      min (global float)
+0:43      degrees (global float)
 0:43        'inF0' (temp float)
-0:43        'inF1' (temp float)
-0:44      pow (global float)
-0:44        'inF0' (temp float)
-0:44        'inF1' (temp float)
-0:45      radians (global float)
-0:45        'inF0' (temp float)
-0:46      divide (temp float)
-0:46        Constant:
-0:46          1.000000
-0:46        'inF0' (temp float)
-0:47      bitFieldReverse (global uint)
-0:47        Constant:
-0:47          2 (const uint)
-0:48      roundEven (global float)
+0:47      exp (global float)
+0:47        'inF0' (temp float)
+0:48      exp2 (global float)
 0:48        'inF0' (temp float)
-0:49      inverse sqrt (global float)
-0:49        'inF0' (temp float)
-0:50      clamp (global float)
-0:50        'inF0' (temp float)
+0:49      findMSB (global int)
+0:49        Constant:
+0:49          7 (const int)
+0:50      findLSB (global int)
 0:50        Constant:
-0:50          0.000000
-0:50        Constant:
-0:50          1.000000
-0:51      Sign (global float)
+0:50          7 (const int)
+0:51      Floor (global float)
 0:51        'inF0' (temp float)
-0:52      sine (global float)
-0:52        'inF0' (temp float)
-0:53      Sequence
-0:53        move second child to first child (temp float)
-0:53          'inF1' (temp float)
-0:53          sine (temp float)
-0:53            'inF0' (temp float)
-0:53        move second child to first child (temp float)
-0:53          'inF2' (temp float)
-0:53          cosine (temp float)
-0:53            'inF0' (temp float)
-0:54      hyp. sine (global float)
+0:53      mod (global float)
+0:53        'inF0' (temp float)
+0:53        'inF1' (temp float)
+0:54      Fraction (global float)
 0:54        'inF0' (temp float)
-0:55      smoothstep (global float)
+0:55      frexp (global float)
 0:55        'inF0' (temp float)
 0:55        'inF1' (temp float)
-0:55        'inF2' (temp float)
-0:56      sqrt (global float)
+0:56      fwidth (global float)
 0:56        'inF0' (temp float)
-0:57      step (global float)
+0:57      isinf (global bool)
 0:57        'inF0' (temp float)
-0:57        'inF1' (temp float)
-0:58      tangent (global float)
+0:58      isnan (global bool)
 0:58        'inF0' (temp float)
-0:59      hyp. tangent (global float)
+0:59      ldexp (global float)
 0:59        'inF0' (temp float)
-0:61      trunc (global float)
-0:61        'inF0' (temp float)
-0:63      Branch: Return with expression
-0:63        Constant:
-0:63          0.000000
-0:72  Function Definition: PixelShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
-0:67    Function Parameters: 
-0:67      'inF0' (temp 1-component vector of float)
-0:67      'inF1' (temp 1-component vector of float)
-0:67      'inF2' (temp 1-component vector of float)
+0:59        'inF1' (temp float)
+0:60      log (global float)
+0:60        'inF0' (temp float)
+0:61      component-wise multiply (temp float)
+0:61        log2 (temp float)
+0:61          'inF0' (temp float)
+0:61        Constant:
+0:61          0.301030
+0:62      log2 (global float)
+0:62        'inF0' (temp float)
+0:63      max (global float)
+0:63        'inF0' (temp float)
+0:63        'inF1' (temp float)
+0:64      min (global float)
+0:64        'inF0' (temp float)
+0:64        'inF1' (temp float)
+0:65      pow (global float)
+0:65        'inF0' (temp float)
+0:65        'inF1' (temp float)
+0:66      radians (global float)
+0:66        'inF0' (temp float)
+0:67      divide (temp float)
+0:67        Constant:
+0:67          1.000000
+0:67        'inF0' (temp float)
+0:68      bitFieldReverse (global uint)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      roundEven (global float)
+0:69        'inF0' (temp float)
+0:70      inverse sqrt (global float)
+0:70        'inF0' (temp float)
+0:71      clamp (temp float)
+0:71        'inF0' (temp float)
+0:71        Constant:
+0:71          0.000000
+0:71        Constant:
+0:71          1.000000
+0:72      Sign (global float)
+0:72        'inF0' (temp float)
+0:73      sine (global float)
+0:73        'inF0' (temp float)
+0:74      Sequence
+0:74        move second child to first child (temp float)
+0:74          'inF1' (temp float)
+0:74          sine (temp float)
+0:74            'inF0' (temp float)
+0:74        move second child to first child (temp float)
+0:74          'inF2' (temp float)
+0:74          cosine (temp float)
+0:74            'inF0' (temp float)
+0:75      hyp. sine (global float)
+0:75        'inF0' (temp float)
+0:76      smoothstep (global float)
+0:76        'inF0' (temp float)
+0:76        'inF1' (temp float)
+0:76        'inF2' (temp float)
+0:77      sqrt (global float)
+0:77        'inF0' (temp float)
+0:78      step (global float)
+0:78        'inF0' (temp float)
+0:78        'inF1' (temp float)
+0:79      tangent (global float)
+0:79        'inF0' (temp float)
+0:80      hyp. tangent (global float)
+0:80        'inF0' (temp float)
+0:82      trunc (global float)
+0:82        'inF0' (temp float)
+0:84      Branch: Return with expression
+0:84        Constant:
+0:84          0.000000
+0:93  Function Definition: PixelShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
+0:88    Function Parameters: 
+0:88      'inF0' (temp 1-component vector of float)
+0:88      'inF1' (temp 1-component vector of float)
+0:88      'inF2' (temp 1-component vector of float)
 0:?     Sequence
-0:69      Branch: Return with expression
-0:69        Constant:
-0:69          0.000000
-0:145  Function Definition: PixelShaderFunction(vf2;vf2;vf2; (temp 2-component vector of float)
-0:73    Function Parameters: 
-0:73      'inF0' (temp 2-component vector of float)
-0:73      'inF1' (temp 2-component vector of float)
-0:73      'inF2' (temp 2-component vector of float)
+0:90      Branch: Return with expression
+0:90        Constant:
+0:90          0.000000
+0:172  Function Definition: PixelShaderFunction(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
+0:94    Function Parameters: 
+0:94      'inF0' (temp 2-component vector of float)
+0:94      'inF1' (temp 2-component vector of float)
+0:94      'inF2' (temp 2-component vector of float)
+0:94      'inU0' (temp 2-component vector of uint)
+0:94      'inU1' (temp 2-component vector of uint)
 0:?     Sequence
-0:74      all (global bool)
-0:74        'inF0' (temp 2-component vector of float)
-0:75      Absolute value (global 2-component vector of float)
-0:75        'inF0' (temp 2-component vector of float)
-0:76      arc cosine (global 2-component vector of float)
-0:76        'inF0' (temp 2-component vector of float)
-0:77      any (global bool)
-0:77        'inF0' (temp 2-component vector of float)
-0:78      arc sine (global 2-component vector of float)
-0:78        'inF0' (temp 2-component vector of float)
-0:79      arc tangent (global 2-component vector of float)
-0:79        'inF0' (temp 2-component vector of float)
-0:80      arc tangent (global 2-component vector of float)
-0:80        'inF0' (temp 2-component vector of float)
-0:80        'inF1' (temp 2-component vector of float)
-0:81      Ceiling (global 2-component vector of float)
-0:81        'inF0' (temp 2-component vector of float)
-0:82      clamp (global 2-component vector of float)
-0:82        'inF0' (temp 2-component vector of float)
-0:82        'inF1' (temp 2-component vector of float)
-0:82        'inF2' (temp 2-component vector of float)
-0:83      Test condition and select (temp void)
-0:83        Condition
-0:83        any (temp bool)
-0:83          Compare Less Than (temp 2-component vector of bool)
-0:83            'inF0' (temp 2-component vector of float)
-0:83            Constant:
-0:83              0.000000
-0:83              0.000000
-0:83        true case
-0:83        Branch: Kill
-0:84      cosine (global 2-component vector of float)
-0:84        'inF0' (temp 2-component vector of float)
-0:85      hyp. cosine (global 2-component vector of float)
-0:85        'inF0' (temp 2-component vector of float)
-0:?       bitCount (global 2-component vector of uint)
-0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:87      dPdx (global 2-component vector of float)
-0:87        'inF0' (temp 2-component vector of float)
-0:88      dPdxCoarse (global 2-component vector of float)
-0:88        'inF0' (temp 2-component vector of float)
-0:89      dPdxFine (global 2-component vector of float)
-0:89        'inF0' (temp 2-component vector of float)
-0:90      dPdy (global 2-component vector of float)
-0:90        'inF0' (temp 2-component vector of float)
-0:91      dPdyCoarse (global 2-component vector of float)
-0:91        'inF0' (temp 2-component vector of float)
-0:92      dPdyFine (global 2-component vector of float)
-0:92        'inF0' (temp 2-component vector of float)
-0:93      degrees (global 2-component vector of float)
-0:93        'inF0' (temp 2-component vector of float)
-0:94      distance (global float)
-0:94        'inF0' (temp 2-component vector of float)
-0:94        'inF1' (temp 2-component vector of float)
-0:95      dot-product (global float)
-0:95        'inF0' (temp 2-component vector of float)
-0:95        'inF1' (temp 2-component vector of float)
-0:99      exp (global 2-component vector of float)
+0:97      all (global bool)
+0:97        'inF0' (temp 2-component vector of float)
+0:98      Absolute value (global 2-component vector of float)
+0:98        'inF0' (temp 2-component vector of float)
+0:99      arc cosine (global 2-component vector of float)
 0:99        'inF0' (temp 2-component vector of float)
-0:100      exp2 (global 2-component vector of float)
+0:100      any (global bool)
 0:100        'inF0' (temp 2-component vector of float)
-0:101      face-forward (global 2-component vector of float)
+0:101      arc sine (global 2-component vector of float)
 0:101        'inF0' (temp 2-component vector of float)
-0:101        'inF1' (temp 2-component vector of float)
-0:101        'inF2' (temp 2-component vector of float)
-0:102      findMSB (global int)
-0:102        Constant:
-0:102          7 (const int)
-0:103      findLSB (global int)
-0:103        Constant:
-0:103          7 (const int)
-0:104      Floor (global 2-component vector of float)
-0:104        'inF0' (temp 2-component vector of float)
-0:106      mod (global 2-component vector of float)
+0:102      floatBitsToInt (global 2-component vector of int)
+0:102        'inF0' (temp 2-component vector of float)
+0:103      floatBitsToUint (global 2-component vector of uint)
+0:103        'inF0' (temp 2-component vector of float)
+0:104      intBitsToFloat (global 2-component vector of float)
+0:104        'inU0' (temp 2-component vector of uint)
+0:106      arc tangent (global 2-component vector of float)
 0:106        'inF0' (temp 2-component vector of float)
-0:106        'inF1' (temp 2-component vector of float)
-0:107      Fraction (global 2-component vector of float)
+0:107      arc tangent (global 2-component vector of float)
 0:107        'inF0' (temp 2-component vector of float)
-0:108      frexp (global 2-component vector of float)
+0:107        'inF1' (temp 2-component vector of float)
+0:108      Ceiling (global 2-component vector of float)
 0:108        'inF0' (temp 2-component vector of float)
-0:108        'inF1' (temp 2-component vector of float)
-0:109      fwidth (global 2-component vector of float)
+0:109      clamp (global 2-component vector of float)
 0:109        'inF0' (temp 2-component vector of float)
-0:110      isinf (global 2-component vector of bool)
-0:110        'inF0' (temp 2-component vector of float)
-0:111      isnan (global 2-component vector of bool)
+0:109        'inF1' (temp 2-component vector of float)
+0:109        'inF2' (temp 2-component vector of float)
+0:110      Test condition and select (temp void)
+0:110        Condition
+0:110        any (temp bool)
+0:110          Compare Less Than (temp 2-component vector of bool)
+0:110            'inF0' (temp 2-component vector of float)
+0:110            Constant:
+0:110              0.000000
+0:110              0.000000
+0:110        true case
+0:110        Branch: Kill
+0:111      cosine (global 2-component vector of float)
 0:111        'inF0' (temp 2-component vector of float)
-0:112      ldexp (global 2-component vector of float)
+0:112      hyp. cosine (global 2-component vector of float)
 0:112        'inF0' (temp 2-component vector of float)
-0:112        'inF1' (temp 2-component vector of float)
-0:113      length (global float)
-0:113        'inF0' (temp 2-component vector of float)
-0:114      log (global 2-component vector of float)
+0:?       bitCount (global 2-component vector of uint)
+0:?         Constant:
+0:?           7 (const uint)
+0:?           3 (const uint)
+0:114      dPdx (global 2-component vector of float)
 0:114        'inF0' (temp 2-component vector of float)
-0:115      vector-scale (temp 2-component vector of float)
-0:115        log2 (temp 2-component vector of float)
-0:115          'inF0' (temp 2-component vector of float)
-0:115        Constant:
-0:115          0.301030
-0:116      log2 (global 2-component vector of float)
+0:115      dPdxCoarse (global 2-component vector of float)
+0:115        'inF0' (temp 2-component vector of float)
+0:116      dPdxFine (global 2-component vector of float)
 0:116        'inF0' (temp 2-component vector of float)
-0:117      max (global 2-component vector of float)
+0:117      dPdy (global 2-component vector of float)
 0:117        'inF0' (temp 2-component vector of float)
-0:117        'inF1' (temp 2-component vector of float)
-0:118      min (global 2-component vector of float)
+0:118      dPdyCoarse (global 2-component vector of float)
 0:118        'inF0' (temp 2-component vector of float)
-0:118        'inF1' (temp 2-component vector of float)
-0:119      normalize (global 2-component vector of float)
+0:119      dPdyFine (global 2-component vector of float)
 0:119        'inF0' (temp 2-component vector of float)
-0:120      pow (global 2-component vector of float)
+0:120      degrees (global 2-component vector of float)
 0:120        'inF0' (temp 2-component vector of float)
-0:120        'inF1' (temp 2-component vector of float)
-0:121      radians (global 2-component vector of float)
+0:121      distance (global float)
 0:121        'inF0' (temp 2-component vector of float)
-0:122      divide (temp 2-component vector of float)
-0:122        Constant:
-0:122          1.000000
+0:121        'inF1' (temp 2-component vector of float)
+0:122      dot-product (global float)
 0:122        'inF0' (temp 2-component vector of float)
-0:123      reflect (global 2-component vector of float)
-0:123        'inF0' (temp 2-component vector of float)
-0:123        'inF1' (temp 2-component vector of float)
-0:124      refract (global 2-component vector of float)
-0:124        'inF0' (temp 2-component vector of float)
-0:124        'inF1' (temp 2-component vector of float)
-0:124        Constant:
-0:124          2.000000
-0:?       bitFieldReverse (global 2-component vector of uint)
-0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:126      roundEven (global 2-component vector of float)
+0:122        'inF1' (temp 2-component vector of float)
+0:126      exp (global 2-component vector of float)
 0:126        'inF0' (temp 2-component vector of float)
-0:127      inverse sqrt (global 2-component vector of float)
+0:127      exp2 (global 2-component vector of float)
 0:127        'inF0' (temp 2-component vector of float)
-0:128      clamp (global 2-component vector of float)
+0:128      face-forward (global 2-component vector of float)
 0:128        'inF0' (temp 2-component vector of float)
-0:128        Constant:
-0:128          0.000000
-0:128        Constant:
-0:128          1.000000
-0:129      Sign (global 2-component vector of float)
-0:129        'inF0' (temp 2-component vector of float)
-0:130      sine (global 2-component vector of float)
-0:130        'inF0' (temp 2-component vector of float)
-0:131      Sequence
-0:131        move second child to first child (temp 2-component vector of float)
-0:131          'inF1' (temp 2-component vector of float)
-0:131          sine (temp 2-component vector of float)
-0:131            'inF0' (temp 2-component vector of float)
-0:131        move second child to first child (temp 2-component vector of float)
-0:131          'inF2' (temp 2-component vector of float)
-0:131          cosine (temp 2-component vector of float)
-0:131            'inF0' (temp 2-component vector of float)
-0:132      hyp. sine (global 2-component vector of float)
-0:132        'inF0' (temp 2-component vector of float)
-0:133      smoothstep (global 2-component vector of float)
+0:128        'inF1' (temp 2-component vector of float)
+0:128        'inF2' (temp 2-component vector of float)
+0:129      findMSB (global int)
+0:129        Constant:
+0:129          7 (const int)
+0:130      findLSB (global int)
+0:130        Constant:
+0:130          7 (const int)
+0:131      Floor (global 2-component vector of float)
+0:131        'inF0' (temp 2-component vector of float)
+0:133      mod (global 2-component vector of float)
 0:133        'inF0' (temp 2-component vector of float)
 0:133        'inF1' (temp 2-component vector of float)
-0:133        'inF2' (temp 2-component vector of float)
-0:134      sqrt (global 2-component vector of float)
+0:134      Fraction (global 2-component vector of float)
 0:134        'inF0' (temp 2-component vector of float)
-0:135      step (global 2-component vector of float)
+0:135      frexp (global 2-component vector of float)
 0:135        'inF0' (temp 2-component vector of float)
 0:135        'inF1' (temp 2-component vector of float)
-0:136      tangent (global 2-component vector of float)
+0:136      fwidth (global 2-component vector of float)
 0:136        'inF0' (temp 2-component vector of float)
-0:137      hyp. tangent (global 2-component vector of float)
+0:137      isinf (global 2-component vector of bool)
 0:137        'inF0' (temp 2-component vector of float)
-0:139      trunc (global 2-component vector of float)
+0:138      isnan (global 2-component vector of bool)
+0:138        'inF0' (temp 2-component vector of float)
+0:139      ldexp (global 2-component vector of float)
 0:139        'inF0' (temp 2-component vector of float)
-0:142      Branch: Return with expression
+0:139        'inF1' (temp 2-component vector of float)
+0:140      length (global float)
+0:140        'inF0' (temp 2-component vector of float)
+0:141      log (global 2-component vector of float)
+0:141        'inF0' (temp 2-component vector of float)
+0:142      vector-scale (temp 2-component vector of float)
+0:142        log2 (temp 2-component vector of float)
+0:142          'inF0' (temp 2-component vector of float)
+0:142        Constant:
+0:142          0.301030
+0:143      log2 (global 2-component vector of float)
+0:143        'inF0' (temp 2-component vector of float)
+0:144      max (global 2-component vector of float)
+0:144        'inF0' (temp 2-component vector of float)
+0:144        'inF1' (temp 2-component vector of float)
+0:145      min (global 2-component vector of float)
+0:145        'inF0' (temp 2-component vector of float)
+0:145        'inF1' (temp 2-component vector of float)
+0:146      normalize (global 2-component vector of float)
+0:146        'inF0' (temp 2-component vector of float)
+0:147      pow (global 2-component vector of float)
+0:147        'inF0' (temp 2-component vector of float)
+0:147        'inF1' (temp 2-component vector of float)
+0:148      radians (global 2-component vector of float)
+0:148        'inF0' (temp 2-component vector of float)
+0:149      divide (temp 2-component vector of float)
+0:149        Constant:
+0:149          1.000000
+0:149        'inF0' (temp 2-component vector of float)
+0:150      reflect (global 2-component vector of float)
+0:150        'inF0' (temp 2-component vector of float)
+0:150        'inF1' (temp 2-component vector of float)
+0:151      refract (global 2-component vector of float)
+0:151        'inF0' (temp 2-component vector of float)
+0:151        'inF1' (temp 2-component vector of float)
+0:151        Constant:
+0:151          2.000000
+0:?       bitFieldReverse (global 2-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:153      roundEven (global 2-component vector of float)
+0:153        'inF0' (temp 2-component vector of float)
+0:154      inverse sqrt (global 2-component vector of float)
+0:154        'inF0' (temp 2-component vector of float)
+0:155      clamp (temp 2-component vector of float)
+0:155        'inF0' (temp 2-component vector of float)
+0:155        Constant:
+0:155          0.000000
+0:155        Constant:
+0:155          1.000000
+0:156      Sign (global 2-component vector of float)
+0:156        'inF0' (temp 2-component vector of float)
+0:157      sine (global 2-component vector of float)
+0:157        'inF0' (temp 2-component vector of float)
+0:158      Sequence
+0:158        move second child to first child (temp 2-component vector of float)
+0:158          'inF1' (temp 2-component vector of float)
+0:158          sine (temp 2-component vector of float)
+0:158            'inF0' (temp 2-component vector of float)
+0:158        move second child to first child (temp 2-component vector of float)
+0:158          'inF2' (temp 2-component vector of float)
+0:158          cosine (temp 2-component vector of float)
+0:158            'inF0' (temp 2-component vector of float)
+0:159      hyp. sine (global 2-component vector of float)
+0:159        'inF0' (temp 2-component vector of float)
+0:160      smoothstep (global 2-component vector of float)
+0:160        'inF0' (temp 2-component vector of float)
+0:160        'inF1' (temp 2-component vector of float)
+0:160        'inF2' (temp 2-component vector of float)
+0:161      sqrt (global 2-component vector of float)
+0:161        'inF0' (temp 2-component vector of float)
+0:162      step (global 2-component vector of float)
+0:162        'inF0' (temp 2-component vector of float)
+0:162        'inF1' (temp 2-component vector of float)
+0:163      tangent (global 2-component vector of float)
+0:163        'inF0' (temp 2-component vector of float)
+0:164      hyp. tangent (global 2-component vector of float)
+0:164        'inF0' (temp 2-component vector of float)
+0:166      trunc (global 2-component vector of float)
+0:166        'inF0' (temp 2-component vector of float)
+0:169      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:219  Function Definition: PixelShaderFunction(vf3;vf3;vf3; (temp 3-component vector of float)
-0:146    Function Parameters: 
-0:146      'inF0' (temp 3-component vector of float)
-0:146      'inF1' (temp 3-component vector of float)
-0:146      'inF2' (temp 3-component vector of float)
+0:252  Function Definition: PixelShaderFunction(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
+0:173    Function Parameters: 
+0:173      'inF0' (temp 3-component vector of float)
+0:173      'inF1' (temp 3-component vector of float)
+0:173      'inF2' (temp 3-component vector of float)
+0:173      'inU0' (temp 3-component vector of uint)
+0:173      'inU1' (temp 3-component vector of uint)
 0:?     Sequence
-0:147      all (global bool)
-0:147        'inF0' (temp 3-component vector of float)
-0:148      Absolute value (global 3-component vector of float)
-0:148        'inF0' (temp 3-component vector of float)
-0:149      arc cosine (global 3-component vector of float)
-0:149        'inF0' (temp 3-component vector of float)
-0:150      any (global bool)
-0:150        'inF0' (temp 3-component vector of float)
-0:151      arc sine (global 3-component vector of float)
-0:151        'inF0' (temp 3-component vector of float)
-0:152      arc tangent (global 3-component vector of float)
-0:152        'inF0' (temp 3-component vector of float)
-0:153      arc tangent (global 3-component vector of float)
-0:153        'inF0' (temp 3-component vector of float)
-0:153        'inF1' (temp 3-component vector of float)
-0:154      Ceiling (global 3-component vector of float)
-0:154        'inF0' (temp 3-component vector of float)
-0:155      clamp (global 3-component vector of float)
-0:155        'inF0' (temp 3-component vector of float)
-0:155        'inF1' (temp 3-component vector of float)
-0:155        'inF2' (temp 3-component vector of float)
-0:156      Test condition and select (temp void)
-0:156        Condition
-0:156        any (temp bool)
-0:156          Compare Less Than (temp 3-component vector of bool)
-0:156            'inF0' (temp 3-component vector of float)
-0:156            Constant:
-0:156              0.000000
-0:156              0.000000
-0:156              0.000000
-0:156        true case
-0:156        Branch: Kill
-0:157      cosine (global 3-component vector of float)
-0:157        'inF0' (temp 3-component vector of float)
-0:158      hyp. cosine (global 3-component vector of float)
-0:158        'inF0' (temp 3-component vector of float)
-0:?       bitCount (global 3-component vector of uint)
-0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:?           5 (const uint)
-0:160      cross-product (global 3-component vector of float)
-0:160        'inF0' (temp 3-component vector of float)
-0:160        'inF1' (temp 3-component vector of float)
-0:161      dPdx (global 3-component vector of float)
-0:161        'inF0' (temp 3-component vector of float)
-0:162      dPdxCoarse (global 3-component vector of float)
-0:162        'inF0' (temp 3-component vector of float)
-0:163      dPdxFine (global 3-component vector of float)
-0:163        'inF0' (temp 3-component vector of float)
-0:164      dPdy (global 3-component vector of float)
-0:164        'inF0' (temp 3-component vector of float)
-0:165      dPdyCoarse (global 3-component vector of float)
-0:165        'inF0' (temp 3-component vector of float)
-0:166      dPdyFine (global 3-component vector of float)
-0:166        'inF0' (temp 3-component vector of float)
-0:167      degrees (global 3-component vector of float)
-0:167        'inF0' (temp 3-component vector of float)
-0:168      distance (global float)
-0:168        'inF0' (temp 3-component vector of float)
-0:168        'inF1' (temp 3-component vector of float)
-0:169      dot-product (global float)
-0:169        'inF0' (temp 3-component vector of float)
-0:169        'inF1' (temp 3-component vector of float)
-0:173      exp (global 3-component vector of float)
-0:173        'inF0' (temp 3-component vector of float)
-0:174      exp2 (global 3-component vector of float)
-0:174        'inF0' (temp 3-component vector of float)
-0:175      face-forward (global 3-component vector of float)
-0:175        'inF0' (temp 3-component vector of float)
-0:175        'inF1' (temp 3-component vector of float)
-0:175        'inF2' (temp 3-component vector of float)
-0:176      findMSB (global int)
-0:176        Constant:
-0:176          7 (const int)
-0:177      findLSB (global int)
-0:177        Constant:
-0:177          7 (const int)
-0:178      Floor (global 3-component vector of float)
+0:176      all (global bool)
+0:176        'inF0' (temp 3-component vector of float)
+0:177      Absolute value (global 3-component vector of float)
+0:177        'inF0' (temp 3-component vector of float)
+0:178      arc cosine (global 3-component vector of float)
 0:178        'inF0' (temp 3-component vector of float)
-0:180      mod (global 3-component vector of float)
+0:179      any (global bool)
+0:179        'inF0' (temp 3-component vector of float)
+0:180      arc sine (global 3-component vector of float)
 0:180        'inF0' (temp 3-component vector of float)
-0:180        'inF1' (temp 3-component vector of float)
-0:181      Fraction (global 3-component vector of float)
+0:181      floatBitsToInt (global 3-component vector of int)
 0:181        'inF0' (temp 3-component vector of float)
-0:182      frexp (global 3-component vector of float)
+0:182      floatBitsToUint (global 3-component vector of uint)
 0:182        'inF0' (temp 3-component vector of float)
-0:182        'inF1' (temp 3-component vector of float)
-0:183      fwidth (global 3-component vector of float)
-0:183        'inF0' (temp 3-component vector of float)
-0:184      isinf (global 3-component vector of bool)
-0:184        'inF0' (temp 3-component vector of float)
-0:185      isnan (global 3-component vector of bool)
+0:183      intBitsToFloat (global 3-component vector of float)
+0:183        'inU0' (temp 3-component vector of uint)
+0:185      arc tangent (global 3-component vector of float)
 0:185        'inF0' (temp 3-component vector of float)
-0:186      ldexp (global 3-component vector of float)
+0:186      arc tangent (global 3-component vector of float)
 0:186        'inF0' (temp 3-component vector of float)
 0:186        'inF1' (temp 3-component vector of float)
-0:187      length (global float)
+0:187      Ceiling (global 3-component vector of float)
 0:187        'inF0' (temp 3-component vector of float)
-0:188      log (global 3-component vector of float)
+0:188      clamp (global 3-component vector of float)
 0:188        'inF0' (temp 3-component vector of float)
-0:189      vector-scale (temp 3-component vector of float)
-0:189        log2 (temp 3-component vector of float)
-0:189          'inF0' (temp 3-component vector of float)
-0:189        Constant:
-0:189          0.301030
-0:190      log2 (global 3-component vector of float)
+0:188        'inF1' (temp 3-component vector of float)
+0:188        'inF2' (temp 3-component vector of float)
+0:189      Test condition and select (temp void)
+0:189        Condition
+0:189        any (temp bool)
+0:189          Compare Less Than (temp 3-component vector of bool)
+0:189            'inF0' (temp 3-component vector of float)
+0:189            Constant:
+0:189              0.000000
+0:189              0.000000
+0:189              0.000000
+0:189        true case
+0:189        Branch: Kill
+0:190      cosine (global 3-component vector of float)
 0:190        'inF0' (temp 3-component vector of float)
-0:191      max (global 3-component vector of float)
+0:191      hyp. cosine (global 3-component vector of float)
 0:191        'inF0' (temp 3-component vector of float)
-0:191        'inF1' (temp 3-component vector of float)
-0:192      min (global 3-component vector of float)
-0:192        'inF0' (temp 3-component vector of float)
-0:192        'inF1' (temp 3-component vector of float)
-0:193      normalize (global 3-component vector of float)
+0:?       bitCount (global 3-component vector of uint)
+0:?         Constant:
+0:?           7 (const uint)
+0:?           3 (const uint)
+0:?           5 (const uint)
+0:193      cross-product (global 3-component vector of float)
 0:193        'inF0' (temp 3-component vector of float)
-0:194      pow (global 3-component vector of float)
+0:193        'inF1' (temp 3-component vector of float)
+0:194      dPdx (global 3-component vector of float)
 0:194        'inF0' (temp 3-component vector of float)
-0:194        'inF1' (temp 3-component vector of float)
-0:195      radians (global 3-component vector of float)
+0:195      dPdxCoarse (global 3-component vector of float)
 0:195        'inF0' (temp 3-component vector of float)
-0:196      divide (temp 3-component vector of float)
-0:196        Constant:
-0:196          1.000000
+0:196      dPdxFine (global 3-component vector of float)
 0:196        'inF0' (temp 3-component vector of float)
-0:197      reflect (global 3-component vector of float)
+0:197      dPdy (global 3-component vector of float)
 0:197        'inF0' (temp 3-component vector of float)
-0:197        'inF1' (temp 3-component vector of float)
-0:198      refract (global 3-component vector of float)
+0:198      dPdyCoarse (global 3-component vector of float)
 0:198        'inF0' (temp 3-component vector of float)
-0:198        'inF1' (temp 3-component vector of float)
-0:198        Constant:
-0:198          2.000000
-0:?       bitFieldReverse (global 3-component vector of uint)
-0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:?           3 (const uint)
-0:200      roundEven (global 3-component vector of float)
+0:199      dPdyFine (global 3-component vector of float)
+0:199        'inF0' (temp 3-component vector of float)
+0:200      degrees (global 3-component vector of float)
 0:200        'inF0' (temp 3-component vector of float)
-0:201      inverse sqrt (global 3-component vector of float)
+0:201      distance (global float)
 0:201        'inF0' (temp 3-component vector of float)
-0:202      clamp (global 3-component vector of float)
+0:201        'inF1' (temp 3-component vector of float)
+0:202      dot-product (global float)
 0:202        'inF0' (temp 3-component vector of float)
-0:202        Constant:
-0:202          0.000000
-0:202        Constant:
-0:202          1.000000
-0:203      Sign (global 3-component vector of float)
-0:203        'inF0' (temp 3-component vector of float)
-0:204      sine (global 3-component vector of float)
-0:204        'inF0' (temp 3-component vector of float)
-0:205      Sequence
-0:205        move second child to first child (temp 3-component vector of float)
-0:205          'inF1' (temp 3-component vector of float)
-0:205          sine (temp 3-component vector of float)
-0:205            'inF0' (temp 3-component vector of float)
-0:205        move second child to first child (temp 3-component vector of float)
-0:205          'inF2' (temp 3-component vector of float)
-0:205          cosine (temp 3-component vector of float)
-0:205            'inF0' (temp 3-component vector of float)
-0:206      hyp. sine (global 3-component vector of float)
+0:202        'inF1' (temp 3-component vector of float)
+0:206      exp (global 3-component vector of float)
 0:206        'inF0' (temp 3-component vector of float)
-0:207      smoothstep (global 3-component vector of float)
+0:207      exp2 (global 3-component vector of float)
 0:207        'inF0' (temp 3-component vector of float)
-0:207        'inF1' (temp 3-component vector of float)
-0:207        'inF2' (temp 3-component vector of float)
-0:208      sqrt (global 3-component vector of float)
+0:208      face-forward (global 3-component vector of float)
 0:208        'inF0' (temp 3-component vector of float)
-0:209      step (global 3-component vector of float)
-0:209        'inF0' (temp 3-component vector of float)
-0:209        'inF1' (temp 3-component vector of float)
-0:210      tangent (global 3-component vector of float)
-0:210        'inF0' (temp 3-component vector of float)
-0:211      hyp. tangent (global 3-component vector of float)
+0:208        'inF1' (temp 3-component vector of float)
+0:208        'inF2' (temp 3-component vector of float)
+0:209      findMSB (global int)
+0:209        Constant:
+0:209          7 (const int)
+0:210      findLSB (global int)
+0:210        Constant:
+0:210          7 (const int)
+0:211      Floor (global 3-component vector of float)
 0:211        'inF0' (temp 3-component vector of float)
-0:213      trunc (global 3-component vector of float)
+0:213      mod (global 3-component vector of float)
 0:213        'inF0' (temp 3-component vector of float)
-0:216      Branch: Return with expression
+0:213        'inF1' (temp 3-component vector of float)
+0:214      Fraction (global 3-component vector of float)
+0:214        'inF0' (temp 3-component vector of float)
+0:215      frexp (global 3-component vector of float)
+0:215        'inF0' (temp 3-component vector of float)
+0:215        'inF1' (temp 3-component vector of float)
+0:216      fwidth (global 3-component vector of float)
+0:216        'inF0' (temp 3-component vector of float)
+0:217      isinf (global 3-component vector of bool)
+0:217        'inF0' (temp 3-component vector of float)
+0:218      isnan (global 3-component vector of bool)
+0:218        'inF0' (temp 3-component vector of float)
+0:219      ldexp (global 3-component vector of float)
+0:219        'inF0' (temp 3-component vector of float)
+0:219        'inF1' (temp 3-component vector of float)
+0:220      length (global float)
+0:220        'inF0' (temp 3-component vector of float)
+0:221      log (global 3-component vector of float)
+0:221        'inF0' (temp 3-component vector of float)
+0:222      vector-scale (temp 3-component vector of float)
+0:222        log2 (temp 3-component vector of float)
+0:222          'inF0' (temp 3-component vector of float)
+0:222        Constant:
+0:222          0.301030
+0:223      log2 (global 3-component vector of float)
+0:223        'inF0' (temp 3-component vector of float)
+0:224      max (global 3-component vector of float)
+0:224        'inF0' (temp 3-component vector of float)
+0:224        'inF1' (temp 3-component vector of float)
+0:225      min (global 3-component vector of float)
+0:225        'inF0' (temp 3-component vector of float)
+0:225        'inF1' (temp 3-component vector of float)
+0:226      normalize (global 3-component vector of float)
+0:226        'inF0' (temp 3-component vector of float)
+0:227      pow (global 3-component vector of float)
+0:227        'inF0' (temp 3-component vector of float)
+0:227        'inF1' (temp 3-component vector of float)
+0:228      radians (global 3-component vector of float)
+0:228        'inF0' (temp 3-component vector of float)
+0:229      divide (temp 3-component vector of float)
+0:229        Constant:
+0:229          1.000000
+0:229        'inF0' (temp 3-component vector of float)
+0:230      reflect (global 3-component vector of float)
+0:230        'inF0' (temp 3-component vector of float)
+0:230        'inF1' (temp 3-component vector of float)
+0:231      refract (global 3-component vector of float)
+0:231        'inF0' (temp 3-component vector of float)
+0:231        'inF1' (temp 3-component vector of float)
+0:231        Constant:
+0:231          2.000000
+0:?       bitFieldReverse (global 3-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:?           3 (const uint)
+0:233      roundEven (global 3-component vector of float)
+0:233        'inF0' (temp 3-component vector of float)
+0:234      inverse sqrt (global 3-component vector of float)
+0:234        'inF0' (temp 3-component vector of float)
+0:235      clamp (temp 3-component vector of float)
+0:235        'inF0' (temp 3-component vector of float)
+0:235        Constant:
+0:235          0.000000
+0:235        Constant:
+0:235          1.000000
+0:236      Sign (global 3-component vector of float)
+0:236        'inF0' (temp 3-component vector of float)
+0:237      sine (global 3-component vector of float)
+0:237        'inF0' (temp 3-component vector of float)
+0:238      Sequence
+0:238        move second child to first child (temp 3-component vector of float)
+0:238          'inF1' (temp 3-component vector of float)
+0:238          sine (temp 3-component vector of float)
+0:238            'inF0' (temp 3-component vector of float)
+0:238        move second child to first child (temp 3-component vector of float)
+0:238          'inF2' (temp 3-component vector of float)
+0:238          cosine (temp 3-component vector of float)
+0:238            'inF0' (temp 3-component vector of float)
+0:239      hyp. sine (global 3-component vector of float)
+0:239        'inF0' (temp 3-component vector of float)
+0:240      smoothstep (global 3-component vector of float)
+0:240        'inF0' (temp 3-component vector of float)
+0:240        'inF1' (temp 3-component vector of float)
+0:240        'inF2' (temp 3-component vector of float)
+0:241      sqrt (global 3-component vector of float)
+0:241        'inF0' (temp 3-component vector of float)
+0:242      step (global 3-component vector of float)
+0:242        'inF0' (temp 3-component vector of float)
+0:242        'inF1' (temp 3-component vector of float)
+0:243      tangent (global 3-component vector of float)
+0:243        'inF0' (temp 3-component vector of float)
+0:244      hyp. tangent (global 3-component vector of float)
+0:244        'inF0' (temp 3-component vector of float)
+0:246      trunc (global 3-component vector of float)
+0:246        'inF0' (temp 3-component vector of float)
+0:249      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:349  Function Definition: PixelShaderFunction(vf4;vf4;vf4; (temp 4-component vector of float)
-0:220    Function Parameters: 
-0:220      'inF0' (temp 4-component vector of float)
-0:220      'inF1' (temp 4-component vector of float)
-0:220      'inF2' (temp 4-component vector of float)
+0:393  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
+0:253    Function Parameters: 
+0:253      'inF0' (temp 4-component vector of float)
+0:253      'inF1' (temp 4-component vector of float)
+0:253      'inF2' (temp 4-component vector of float)
+0:253      'inU0' (temp 4-component vector of uint)
+0:253      'inU1' (temp 4-component vector of uint)
 0:?     Sequence
-0:221      all (global bool)
-0:221        'inF0' (temp 4-component vector of float)
-0:222      Absolute value (global 4-component vector of float)
-0:222        'inF0' (temp 4-component vector of float)
-0:223      arc cosine (global 4-component vector of float)
-0:223        'inF0' (temp 4-component vector of float)
-0:224      any (global bool)
-0:224        'inF0' (temp 4-component vector of float)
-0:225      arc sine (global 4-component vector of float)
-0:225        'inF0' (temp 4-component vector of float)
-0:226      arc tangent (global 4-component vector of float)
-0:226        'inF0' (temp 4-component vector of float)
-0:227      arc tangent (global 4-component vector of float)
-0:227        'inF0' (temp 4-component vector of float)
-0:227        'inF1' (temp 4-component vector of float)
-0:228      Ceiling (global 4-component vector of float)
-0:228        'inF0' (temp 4-component vector of float)
-0:229      clamp (global 4-component vector of float)
-0:229        'inF0' (temp 4-component vector of float)
-0:229        'inF1' (temp 4-component vector of float)
-0:229        'inF2' (temp 4-component vector of float)
-0:230      Test condition and select (temp void)
-0:230        Condition
-0:230        any (temp bool)
-0:230          Compare Less Than (temp 4-component vector of bool)
-0:230            'inF0' (temp 4-component vector of float)
-0:230            Constant:
-0:230              0.000000
-0:230              0.000000
-0:230              0.000000
-0:230              0.000000
-0:230        true case
-0:230        Branch: Kill
-0:231      cosine (global 4-component vector of float)
-0:231        'inF0' (temp 4-component vector of float)
-0:232      hyp. cosine (global 4-component vector of float)
-0:232        'inF0' (temp 4-component vector of float)
-0:?       bitCount (global 4-component vector of uint)
-0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:?           5 (const uint)
-0:?           2 (const uint)
-0:234      dPdx (global 4-component vector of float)
-0:234        'inF0' (temp 4-component vector of float)
-0:235      dPdxCoarse (global 4-component vector of float)
-0:235        'inF0' (temp 4-component vector of float)
-0:236      dPdxFine (global 4-component vector of float)
-0:236        'inF0' (temp 4-component vector of float)
-0:237      dPdy (global 4-component vector of float)
-0:237        'inF0' (temp 4-component vector of float)
-0:238      dPdyCoarse (global 4-component vector of float)
-0:238        'inF0' (temp 4-component vector of float)
-0:239      dPdyFine (global 4-component vector of float)
-0:239        'inF0' (temp 4-component vector of float)
-0:240      degrees (global 4-component vector of float)
-0:240        'inF0' (temp 4-component vector of float)
-0:241      distance (global float)
-0:241        'inF0' (temp 4-component vector of float)
-0:241        'inF1' (temp 4-component vector of float)
-0:242      dot-product (global float)
-0:242        'inF0' (temp 4-component vector of float)
-0:242        'inF1' (temp 4-component vector of float)
-0:243      Construct vec4 (temp float)
-0:243        Constant:
-0:243          1.000000
-0:243        component-wise multiply (temp float)
-0:243          direct index (temp float)
-0:243            'inF0' (temp 4-component vector of float)
-0:243            Constant:
-0:243              1 (const int)
-0:243          direct index (temp float)
-0:243            'inF1' (temp 4-component vector of float)
-0:243            Constant:
-0:243              1 (const int)
-0:243        direct index (temp float)
-0:243          'inF0' (temp 4-component vector of float)
-0:243          Constant:
-0:243            2 (const int)
-0:243        direct index (temp float)
-0:243          'inF1' (temp 4-component vector of float)
-0:243          Constant:
-0:243            3 (const int)
-0:247      exp (global 4-component vector of float)
-0:247        'inF0' (temp 4-component vector of float)
-0:248      exp2 (global 4-component vector of float)
-0:248        'inF0' (temp 4-component vector of float)
-0:249      face-forward (global 4-component vector of float)
-0:249        'inF0' (temp 4-component vector of float)
-0:249        'inF1' (temp 4-component vector of float)
-0:249        'inF2' (temp 4-component vector of float)
-0:250      findMSB (global int)
-0:250        Constant:
-0:250          7 (const int)
-0:251      findLSB (global int)
-0:251        Constant:
-0:251          7 (const int)
-0:252      Floor (global 4-component vector of float)
-0:252        'inF0' (temp 4-component vector of float)
-0:254      mod (global 4-component vector of float)
-0:254        'inF0' (temp 4-component vector of float)
-0:254        'inF1' (temp 4-component vector of float)
-0:255      Fraction (global 4-component vector of float)
-0:255        'inF0' (temp 4-component vector of float)
-0:256      frexp (global 4-component vector of float)
+0:256      all (global bool)
 0:256        'inF0' (temp 4-component vector of float)
-0:256        'inF1' (temp 4-component vector of float)
-0:257      fwidth (global 4-component vector of float)
+0:257      Absolute value (global 4-component vector of float)
 0:257        'inF0' (temp 4-component vector of float)
-0:258      isinf (global 4-component vector of bool)
+0:258      arc cosine (global 4-component vector of float)
 0:258        'inF0' (temp 4-component vector of float)
-0:259      isnan (global 4-component vector of bool)
+0:259      any (global bool)
 0:259        'inF0' (temp 4-component vector of float)
-0:260      ldexp (global 4-component vector of float)
+0:260      arc sine (global 4-component vector of float)
 0:260        'inF0' (temp 4-component vector of float)
-0:260        'inF1' (temp 4-component vector of float)
-0:261      length (global float)
+0:261      floatBitsToInt (global 4-component vector of int)
 0:261        'inF0' (temp 4-component vector of float)
-0:262      log (global 4-component vector of float)
+0:262      floatBitsToUint (global 4-component vector of uint)
 0:262        'inF0' (temp 4-component vector of float)
-0:263      vector-scale (temp 4-component vector of float)
-0:263        log2 (temp 4-component vector of float)
-0:263          'inF0' (temp 4-component vector of float)
-0:263        Constant:
-0:263          0.301030
-0:264      log2 (global 4-component vector of float)
-0:264        'inF0' (temp 4-component vector of float)
-0:265      max (global 4-component vector of float)
+0:263      intBitsToFloat (global 4-component vector of float)
+0:263        'inU0' (temp 4-component vector of uint)
+0:265      arc tangent (global 4-component vector of float)
 0:265        'inF0' (temp 4-component vector of float)
-0:265        'inF1' (temp 4-component vector of float)
-0:266      min (global 4-component vector of float)
+0:266      arc tangent (global 4-component vector of float)
 0:266        'inF0' (temp 4-component vector of float)
 0:266        'inF1' (temp 4-component vector of float)
-0:267      normalize (global 4-component vector of float)
+0:267      Ceiling (global 4-component vector of float)
 0:267        'inF0' (temp 4-component vector of float)
-0:268      pow (global 4-component vector of float)
+0:268      clamp (global 4-component vector of float)
 0:268        'inF0' (temp 4-component vector of float)
 0:268        'inF1' (temp 4-component vector of float)
-0:269      radians (global 4-component vector of float)
-0:269        'inF0' (temp 4-component vector of float)
-0:270      divide (temp 4-component vector of float)
-0:270        Constant:
-0:270          1.000000
+0:268        'inF2' (temp 4-component vector of float)
+0:269      Test condition and select (temp void)
+0:269        Condition
+0:269        any (temp bool)
+0:269          Compare Less Than (temp 4-component vector of bool)
+0:269            'inF0' (temp 4-component vector of float)
+0:269            Constant:
+0:269              0.000000
+0:269              0.000000
+0:269              0.000000
+0:269              0.000000
+0:269        true case
+0:269        Branch: Kill
+0:270      cosine (global 4-component vector of float)
 0:270        'inF0' (temp 4-component vector of float)
-0:271      reflect (global 4-component vector of float)
+0:271      hyp. cosine (global 4-component vector of float)
 0:271        'inF0' (temp 4-component vector of float)
-0:271        'inF1' (temp 4-component vector of float)
-0:272      refract (global 4-component vector of float)
-0:272        'inF0' (temp 4-component vector of float)
-0:272        'inF1' (temp 4-component vector of float)
-0:272        Constant:
-0:272          2.000000
-0:?       bitFieldReverse (global 4-component vector of uint)
+0:?       bitCount (global 4-component vector of uint)
 0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
+0:?           7 (const uint)
 0:?           3 (const uint)
-0:?           4 (const uint)
-0:274      roundEven (global 4-component vector of float)
+0:?           5 (const uint)
+0:?           2 (const uint)
+0:273      dPdx (global 4-component vector of float)
+0:273        'inF0' (temp 4-component vector of float)
+0:274      dPdxCoarse (global 4-component vector of float)
 0:274        'inF0' (temp 4-component vector of float)
-0:275      inverse sqrt (global 4-component vector of float)
+0:275      dPdxFine (global 4-component vector of float)
 0:275        'inF0' (temp 4-component vector of float)
-0:276      clamp (global 4-component vector of float)
+0:276      dPdy (global 4-component vector of float)
 0:276        'inF0' (temp 4-component vector of float)
-0:276        Constant:
-0:276          0.000000
-0:276        Constant:
-0:276          1.000000
-0:277      Sign (global 4-component vector of float)
+0:277      dPdyCoarse (global 4-component vector of float)
 0:277        'inF0' (temp 4-component vector of float)
-0:278      sine (global 4-component vector of float)
+0:278      dPdyFine (global 4-component vector of float)
 0:278        'inF0' (temp 4-component vector of float)
-0:279      Sequence
-0:279        move second child to first child (temp 4-component vector of float)
-0:279          'inF1' (temp 4-component vector of float)
-0:279          sine (temp 4-component vector of float)
-0:279            'inF0' (temp 4-component vector of float)
-0:279        move second child to first child (temp 4-component vector of float)
-0:279          'inF2' (temp 4-component vector of float)
-0:279          cosine (temp 4-component vector of float)
-0:279            'inF0' (temp 4-component vector of float)
-0:280      hyp. sine (global 4-component vector of float)
+0:279      degrees (global 4-component vector of float)
+0:279        'inF0' (temp 4-component vector of float)
+0:280      distance (global float)
 0:280        'inF0' (temp 4-component vector of float)
-0:281      smoothstep (global 4-component vector of float)
+0:280        'inF1' (temp 4-component vector of float)
+0:281      dot-product (global float)
 0:281        'inF0' (temp 4-component vector of float)
 0:281        'inF1' (temp 4-component vector of float)
-0:281        'inF2' (temp 4-component vector of float)
-0:282      sqrt (global 4-component vector of float)
-0:282        'inF0' (temp 4-component vector of float)
-0:283      step (global 4-component vector of float)
-0:283        'inF0' (temp 4-component vector of float)
-0:283        'inF1' (temp 4-component vector of float)
-0:284      tangent (global 4-component vector of float)
-0:284        'inF0' (temp 4-component vector of float)
-0:285      hyp. tangent (global 4-component vector of float)
-0:285        'inF0' (temp 4-component vector of float)
-0:287      trunc (global 4-component vector of float)
+0:282      Construct vec4 (temp float)
+0:282        Constant:
+0:282          1.000000
+0:282        component-wise multiply (temp float)
+0:282          direct index (temp float)
+0:282            'inF0' (temp 4-component vector of float)
+0:282            Constant:
+0:282              1 (const int)
+0:282          direct index (temp float)
+0:282            'inF1' (temp 4-component vector of float)
+0:282            Constant:
+0:282              1 (const int)
+0:282        direct index (temp float)
+0:282          'inF0' (temp 4-component vector of float)
+0:282          Constant:
+0:282            2 (const int)
+0:282        direct index (temp float)
+0:282          'inF1' (temp 4-component vector of float)
+0:282          Constant:
+0:282            3 (const int)
+0:286      exp (global 4-component vector of float)
+0:286        'inF0' (temp 4-component vector of float)
+0:287      exp2 (global 4-component vector of float)
 0:287        'inF0' (temp 4-component vector of float)
-0:290      Branch: Return with expression
+0:288      face-forward (global 4-component vector of float)
+0:288        'inF0' (temp 4-component vector of float)
+0:288        'inF1' (temp 4-component vector of float)
+0:288        'inF2' (temp 4-component vector of float)
+0:289      findMSB (global int)
+0:289        Constant:
+0:289          7 (const int)
+0:290      findLSB (global int)
+0:290        Constant:
+0:290          7 (const int)
+0:291      Floor (global 4-component vector of float)
+0:291        'inF0' (temp 4-component vector of float)
+0:293      mod (global 4-component vector of float)
+0:293        'inF0' (temp 4-component vector of float)
+0:293        'inF1' (temp 4-component vector of float)
+0:294      Fraction (global 4-component vector of float)
+0:294        'inF0' (temp 4-component vector of float)
+0:295      frexp (global 4-component vector of float)
+0:295        'inF0' (temp 4-component vector of float)
+0:295        'inF1' (temp 4-component vector of float)
+0:296      fwidth (global 4-component vector of float)
+0:296        'inF0' (temp 4-component vector of float)
+0:297      isinf (global 4-component vector of bool)
+0:297        'inF0' (temp 4-component vector of float)
+0:298      isnan (global 4-component vector of bool)
+0:298        'inF0' (temp 4-component vector of float)
+0:299      ldexp (global 4-component vector of float)
+0:299        'inF0' (temp 4-component vector of float)
+0:299        'inF1' (temp 4-component vector of float)
+0:300      length (global float)
+0:300        'inF0' (temp 4-component vector of float)
+0:301      log (global 4-component vector of float)
+0:301        'inF0' (temp 4-component vector of float)
+0:302      vector-scale (temp 4-component vector of float)
+0:302        log2 (temp 4-component vector of float)
+0:302          'inF0' (temp 4-component vector of float)
+0:302        Constant:
+0:302          0.301030
+0:303      log2 (global 4-component vector of float)
+0:303        'inF0' (temp 4-component vector of float)
+0:304      max (global 4-component vector of float)
+0:304        'inF0' (temp 4-component vector of float)
+0:304        'inF1' (temp 4-component vector of float)
+0:305      min (global 4-component vector of float)
+0:305        'inF0' (temp 4-component vector of float)
+0:305        'inF1' (temp 4-component vector of float)
+0:306      normalize (global 4-component vector of float)
+0:306        'inF0' (temp 4-component vector of float)
+0:307      pow (global 4-component vector of float)
+0:307        'inF0' (temp 4-component vector of float)
+0:307        'inF1' (temp 4-component vector of float)
+0:308      radians (global 4-component vector of float)
+0:308        'inF0' (temp 4-component vector of float)
+0:309      divide (temp 4-component vector of float)
+0:309        Constant:
+0:309          1.000000
+0:309        'inF0' (temp 4-component vector of float)
+0:310      reflect (global 4-component vector of float)
+0:310        'inF0' (temp 4-component vector of float)
+0:310        'inF1' (temp 4-component vector of float)
+0:311      refract (global 4-component vector of float)
+0:311        'inF0' (temp 4-component vector of float)
+0:311        'inF1' (temp 4-component vector of float)
+0:311        Constant:
+0:311          2.000000
+0:?       bitFieldReverse (global 4-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:?           3 (const uint)
+0:?           4 (const uint)
+0:313      roundEven (global 4-component vector of float)
+0:313        'inF0' (temp 4-component vector of float)
+0:314      inverse sqrt (global 4-component vector of float)
+0:314        'inF0' (temp 4-component vector of float)
+0:315      clamp (temp 4-component vector of float)
+0:315        'inF0' (temp 4-component vector of float)
+0:315        Constant:
+0:315          0.000000
+0:315        Constant:
+0:315          1.000000
+0:316      Sign (global 4-component vector of float)
+0:316        'inF0' (temp 4-component vector of float)
+0:317      sine (global 4-component vector of float)
+0:317        'inF0' (temp 4-component vector of float)
+0:318      Sequence
+0:318        move second child to first child (temp 4-component vector of float)
+0:318          'inF1' (temp 4-component vector of float)
+0:318          sine (temp 4-component vector of float)
+0:318            'inF0' (temp 4-component vector of float)
+0:318        move second child to first child (temp 4-component vector of float)
+0:318          'inF2' (temp 4-component vector of float)
+0:318          cosine (temp 4-component vector of float)
+0:318            'inF0' (temp 4-component vector of float)
+0:319      hyp. sine (global 4-component vector of float)
+0:319        'inF0' (temp 4-component vector of float)
+0:320      smoothstep (global 4-component vector of float)
+0:320        'inF0' (temp 4-component vector of float)
+0:320        'inF1' (temp 4-component vector of float)
+0:320        'inF2' (temp 4-component vector of float)
+0:321      sqrt (global 4-component vector of float)
+0:321        'inF0' (temp 4-component vector of float)
+0:322      step (global 4-component vector of float)
+0:322        'inF0' (temp 4-component vector of float)
+0:322        'inF1' (temp 4-component vector of float)
+0:323      tangent (global 4-component vector of float)
+0:323        'inF0' (temp 4-component vector of float)
+0:324      hyp. tangent (global 4-component vector of float)
+0:324        'inF0' (temp 4-component vector of float)
+0:326      trunc (global 4-component vector of float)
+0:326        'inF0' (temp 4-component vector of float)
+0:329      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:358  Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
-0:350    Function Parameters: 
-0:350      'inF0' (temp 2X2 matrix of float)
-0:350      'inF1' (temp 2X2 matrix of float)
-0:350      'inF2' (temp 2X2 matrix of float)
+0:402  Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
+0:394    Function Parameters: 
+0:394      'inF0' (temp 2X2 matrix of float)
+0:394      'inF1' (temp 2X2 matrix of float)
+0:394      'inF2' (temp 2X2 matrix of float)
 0:?     Sequence
-0:352      all (global bool)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      Absolute value (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      arc cosine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      any (global bool)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      arc sine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      arc tangent (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      arc tangent (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      Ceiling (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      Test condition and select (temp void)
-0:352        Condition
-0:352        any (temp bool)
-0:352          Compare Less Than (temp 2X2 matrix of bool)
-0:352            'inF0' (temp 2X2 matrix of float)
-0:352            Constant:
-0:352              0.000000
-0:352              0.000000
-0:352              0.000000
-0:352              0.000000
-0:352        true case
-0:352        Branch: Kill
-0:352      clamp (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352        'inF2' (temp 2X2 matrix of float)
-0:352      cosine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      hyp. cosine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdx (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdxCoarse (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdxFine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdy (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdyCoarse (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      dPdyFine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      degrees (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      determinant (global float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      exp (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      exp2 (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      findMSB (global int)
-0:352        Constant:
-0:352          7 (const int)
-0:352      findLSB (global int)
-0:352        Constant:
-0:352          7 (const int)
-0:352      Floor (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      mod (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      Fraction (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      frexp (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      fwidth (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      ldexp (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      log (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      matrix-scale (temp 2X2 matrix of float)
-0:352        log2 (temp 2X2 matrix of float)
-0:352          'inF0' (temp 2X2 matrix of float)
-0:352        Constant:
-0:352          0.301030
-0:352      log2 (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      max (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      min (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      pow (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      radians (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      roundEven (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      inverse sqrt (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      clamp (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        Constant:
-0:352          0.000000
-0:352        Constant:
-0:352          1.000000
-0:352      Sign (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      sine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      Sequence
-0:352        move second child to first child (temp 2X2 matrix of float)
-0:352          'inF1' (temp 2X2 matrix of float)
-0:352          sine (temp 2X2 matrix of float)
-0:352            'inF0' (temp 2X2 matrix of float)
-0:352        move second child to first child (temp 2X2 matrix of float)
-0:352          'inF2' (temp 2X2 matrix of float)
-0:352          cosine (temp 2X2 matrix of float)
-0:352            'inF0' (temp 2X2 matrix of float)
-0:352      hyp. sine (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      smoothstep (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352        'inF2' (temp 2X2 matrix of float)
-0:352      sqrt (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      step (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352        'inF1' (temp 2X2 matrix of float)
-0:352      tangent (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      hyp. tangent (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      transpose (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:352      trunc (global 2X2 matrix of float)
-0:352        'inF0' (temp 2X2 matrix of float)
-0:355      Branch: Return with expression
+0:396      all (global bool)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      Absolute value (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      arc cosine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      any (global bool)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      arc sine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      arc tangent (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      arc tangent (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      Ceiling (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      Test condition and select (temp void)
+0:396        Condition
+0:396        any (temp bool)
+0:396          Compare Less Than (temp 2X2 matrix of bool)
+0:396            'inF0' (temp 2X2 matrix of float)
+0:396            Constant:
+0:396              0.000000
+0:396              0.000000
+0:396              0.000000
+0:396              0.000000
+0:396        true case
+0:396        Branch: Kill
+0:396      clamp (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396        'inF2' (temp 2X2 matrix of float)
+0:396      cosine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      hyp. cosine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdx (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdxCoarse (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdxFine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdy (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdyCoarse (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      dPdyFine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      degrees (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      determinant (global float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      exp (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      exp2 (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      findMSB (global int)
+0:396        Constant:
+0:396          7 (const int)
+0:396      findLSB (global int)
+0:396        Constant:
+0:396          7 (const int)
+0:396      Floor (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      mod (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      Fraction (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      frexp (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      fwidth (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      ldexp (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      log (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      matrix-scale (temp 2X2 matrix of float)
+0:396        log2 (temp 2X2 matrix of float)
+0:396          'inF0' (temp 2X2 matrix of float)
+0:396        Constant:
+0:396          0.301030
+0:396      log2 (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      max (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      min (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      pow (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      radians (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      roundEven (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      inverse sqrt (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      clamp (temp 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        Constant:
+0:396          0.000000
+0:396        Constant:
+0:396          1.000000
+0:396      Sign (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      sine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      Sequence
+0:396        move second child to first child (temp 2X2 matrix of float)
+0:396          'inF1' (temp 2X2 matrix of float)
+0:396          sine (temp 2X2 matrix of float)
+0:396            'inF0' (temp 2X2 matrix of float)
+0:396        move second child to first child (temp 2X2 matrix of float)
+0:396          'inF2' (temp 2X2 matrix of float)
+0:396          cosine (temp 2X2 matrix of float)
+0:396            'inF0' (temp 2X2 matrix of float)
+0:396      hyp. sine (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      smoothstep (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396        'inF2' (temp 2X2 matrix of float)
+0:396      sqrt (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      step (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396        'inF1' (temp 2X2 matrix of float)
+0:396      tangent (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      hyp. tangent (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      transpose (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:396      trunc (global 2X2 matrix of float)
+0:396        'inF0' (temp 2X2 matrix of float)
+0:399      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:367  Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
-0:359    Function Parameters: 
-0:359      'inF0' (temp 3X3 matrix of float)
-0:359      'inF1' (temp 3X3 matrix of float)
-0:359      'inF2' (temp 3X3 matrix of float)
+0:411  Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
+0:403    Function Parameters: 
+0:403      'inF0' (temp 3X3 matrix of float)
+0:403      'inF1' (temp 3X3 matrix of float)
+0:403      'inF2' (temp 3X3 matrix of float)
 0:?     Sequence
-0:361      all (global bool)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      Absolute value (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      arc cosine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      any (global bool)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      arc sine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      arc tangent (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      arc tangent (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      Ceiling (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      Test condition and select (temp void)
-0:361        Condition
-0:361        any (temp bool)
-0:361          Compare Less Than (temp 3X3 matrix of bool)
-0:361            'inF0' (temp 3X3 matrix of float)
-0:361            Constant:
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361              0.000000
-0:361        true case
-0:361        Branch: Kill
-0:361      clamp (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361        'inF2' (temp 3X3 matrix of float)
-0:361      cosine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      hyp. cosine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdx (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdxCoarse (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdxFine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdy (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdyCoarse (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      dPdyFine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      degrees (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      determinant (global float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      exp (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      exp2 (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      findMSB (global int)
-0:361        Constant:
-0:361          7 (const int)
-0:361      findLSB (global int)
-0:361        Constant:
-0:361          7 (const int)
-0:361      Floor (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      mod (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      Fraction (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      frexp (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      fwidth (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      ldexp (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      log (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      matrix-scale (temp 3X3 matrix of float)
-0:361        log2 (temp 3X3 matrix of float)
-0:361          'inF0' (temp 3X3 matrix of float)
-0:361        Constant:
-0:361          0.301030
-0:361      log2 (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      max (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      min (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      pow (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      radians (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      roundEven (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      inverse sqrt (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      clamp (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        Constant:
-0:361          0.000000
-0:361        Constant:
-0:361          1.000000
-0:361      Sign (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      sine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      Sequence
-0:361        move second child to first child (temp 3X3 matrix of float)
-0:361          'inF1' (temp 3X3 matrix of float)
-0:361          sine (temp 3X3 matrix of float)
-0:361            'inF0' (temp 3X3 matrix of float)
-0:361        move second child to first child (temp 3X3 matrix of float)
-0:361          'inF2' (temp 3X3 matrix of float)
-0:361          cosine (temp 3X3 matrix of float)
-0:361            'inF0' (temp 3X3 matrix of float)
-0:361      hyp. sine (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      smoothstep (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361        'inF2' (temp 3X3 matrix of float)
-0:361      sqrt (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      step (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361        'inF1' (temp 3X3 matrix of float)
-0:361      tangent (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      hyp. tangent (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      transpose (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:361      trunc (global 3X3 matrix of float)
-0:361        'inF0' (temp 3X3 matrix of float)
-0:364      Branch: Return with expression
+0:405      all (global bool)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      Absolute value (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      arc cosine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      any (global bool)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      arc sine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      arc tangent (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      arc tangent (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      Ceiling (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      Test condition and select (temp void)
+0:405        Condition
+0:405        any (temp bool)
+0:405          Compare Less Than (temp 3X3 matrix of bool)
+0:405            'inF0' (temp 3X3 matrix of float)
+0:405            Constant:
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405              0.000000
+0:405        true case
+0:405        Branch: Kill
+0:405      clamp (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405        'inF2' (temp 3X3 matrix of float)
+0:405      cosine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      hyp. cosine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdx (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdxCoarse (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdxFine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdy (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdyCoarse (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      dPdyFine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      degrees (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      determinant (global float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      exp (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      exp2 (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      findMSB (global int)
+0:405        Constant:
+0:405          7 (const int)
+0:405      findLSB (global int)
+0:405        Constant:
+0:405          7 (const int)
+0:405      Floor (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      mod (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      Fraction (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      frexp (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      fwidth (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      ldexp (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      log (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      matrix-scale (temp 3X3 matrix of float)
+0:405        log2 (temp 3X3 matrix of float)
+0:405          'inF0' (temp 3X3 matrix of float)
+0:405        Constant:
+0:405          0.301030
+0:405      log2 (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      max (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      min (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      pow (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      radians (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      roundEven (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      inverse sqrt (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      clamp (temp 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        Constant:
+0:405          0.000000
+0:405        Constant:
+0:405          1.000000
+0:405      Sign (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      sine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      Sequence
+0:405        move second child to first child (temp 3X3 matrix of float)
+0:405          'inF1' (temp 3X3 matrix of float)
+0:405          sine (temp 3X3 matrix of float)
+0:405            'inF0' (temp 3X3 matrix of float)
+0:405        move second child to first child (temp 3X3 matrix of float)
+0:405          'inF2' (temp 3X3 matrix of float)
+0:405          cosine (temp 3X3 matrix of float)
+0:405            'inF0' (temp 3X3 matrix of float)
+0:405      hyp. sine (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      smoothstep (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405        'inF2' (temp 3X3 matrix of float)
+0:405      sqrt (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      step (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405        'inF1' (temp 3X3 matrix of float)
+0:405      tangent (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      hyp. tangent (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      transpose (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:405      trunc (global 3X3 matrix of float)
+0:405        'inF0' (temp 3X3 matrix of float)
+0:408      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -2467,165 +2543,165 @@ gl_FragCoord origin is upper left
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:388  Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
-0:368    Function Parameters: 
-0:368      'inF0' (temp 4X4 matrix of float)
-0:368      'inF1' (temp 4X4 matrix of float)
-0:368      'inF2' (temp 4X4 matrix of float)
+0:432  Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
+0:412    Function Parameters: 
+0:412      'inF0' (temp 4X4 matrix of float)
+0:412      'inF1' (temp 4X4 matrix of float)
+0:412      'inF2' (temp 4X4 matrix of float)
 0:?     Sequence
-0:370      all (global bool)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      Absolute value (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      arc cosine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      any (global bool)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      arc sine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      arc tangent (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      arc tangent (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      Ceiling (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      Test condition and select (temp void)
-0:370        Condition
-0:370        any (temp bool)
-0:370          Compare Less Than (temp 4X4 matrix of bool)
-0:370            'inF0' (temp 4X4 matrix of float)
-0:370            Constant:
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370              0.000000
-0:370        true case
-0:370        Branch: Kill
-0:370      clamp (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370        'inF2' (temp 4X4 matrix of float)
-0:370      cosine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      hyp. cosine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdx (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdxCoarse (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdxFine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdy (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdyCoarse (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      dPdyFine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      degrees (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      determinant (global float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      exp (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      exp2 (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      findMSB (global int)
-0:370        Constant:
-0:370          7 (const int)
-0:370      findLSB (global int)
-0:370        Constant:
-0:370          7 (const int)
-0:370      Floor (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      mod (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      Fraction (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      frexp (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      fwidth (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      ldexp (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      log (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      matrix-scale (temp 4X4 matrix of float)
-0:370        log2 (temp 4X4 matrix of float)
-0:370          'inF0' (temp 4X4 matrix of float)
-0:370        Constant:
-0:370          0.301030
-0:370      log2 (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      max (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      min (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      pow (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      radians (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      roundEven (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      inverse sqrt (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      clamp (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        Constant:
-0:370          0.000000
-0:370        Constant:
-0:370          1.000000
-0:370      Sign (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      sine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      Sequence
-0:370        move second child to first child (temp 4X4 matrix of float)
-0:370          'inF1' (temp 4X4 matrix of float)
-0:370          sine (temp 4X4 matrix of float)
-0:370            'inF0' (temp 4X4 matrix of float)
-0:370        move second child to first child (temp 4X4 matrix of float)
-0:370          'inF2' (temp 4X4 matrix of float)
-0:370          cosine (temp 4X4 matrix of float)
-0:370            'inF0' (temp 4X4 matrix of float)
-0:370      hyp. sine (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      smoothstep (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370        'inF2' (temp 4X4 matrix of float)
-0:370      sqrt (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      step (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370        'inF1' (temp 4X4 matrix of float)
-0:370      tangent (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      hyp. tangent (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      transpose (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:370      trunc (global 4X4 matrix of float)
-0:370        'inF0' (temp 4X4 matrix of float)
-0:373      Branch: Return with expression
+0:414      all (global bool)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      Absolute value (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      arc cosine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      any (global bool)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      arc sine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      arc tangent (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      arc tangent (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      Ceiling (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      Test condition and select (temp void)
+0:414        Condition
+0:414        any (temp bool)
+0:414          Compare Less Than (temp 4X4 matrix of bool)
+0:414            'inF0' (temp 4X4 matrix of float)
+0:414            Constant:
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414              0.000000
+0:414        true case
+0:414        Branch: Kill
+0:414      clamp (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414        'inF2' (temp 4X4 matrix of float)
+0:414      cosine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      hyp. cosine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdx (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdxCoarse (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdxFine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdy (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdyCoarse (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      dPdyFine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      degrees (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      determinant (global float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      exp (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      exp2 (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      findMSB (global int)
+0:414        Constant:
+0:414          7 (const int)
+0:414      findLSB (global int)
+0:414        Constant:
+0:414          7 (const int)
+0:414      Floor (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      mod (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      Fraction (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      frexp (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      fwidth (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      ldexp (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      log (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      matrix-scale (temp 4X4 matrix of float)
+0:414        log2 (temp 4X4 matrix of float)
+0:414          'inF0' (temp 4X4 matrix of float)
+0:414        Constant:
+0:414          0.301030
+0:414      log2 (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      max (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      min (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      pow (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      radians (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      roundEven (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      inverse sqrt (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      clamp (temp 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        Constant:
+0:414          0.000000
+0:414        Constant:
+0:414          1.000000
+0:414      Sign (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      sine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      Sequence
+0:414        move second child to first child (temp 4X4 matrix of float)
+0:414          'inF1' (temp 4X4 matrix of float)
+0:414          sine (temp 4X4 matrix of float)
+0:414            'inF0' (temp 4X4 matrix of float)
+0:414        move second child to first child (temp 4X4 matrix of float)
+0:414          'inF2' (temp 4X4 matrix of float)
+0:414          cosine (temp 4X4 matrix of float)
+0:414            'inF0' (temp 4X4 matrix of float)
+0:414      hyp. sine (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      smoothstep (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414        'inF2' (temp 4X4 matrix of float)
+0:414      sqrt (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      step (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414        'inF1' (temp 4X4 matrix of float)
+0:414      tangent (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      hyp. tangent (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      transpose (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:414      trunc (global 4X4 matrix of float)
+0:414        'inF0' (temp 4X4 matrix of float)
+0:417      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
@@ -2643,173 +2719,185 @@ gl_FragCoord origin is upper left
 0:?           4.000000
 0:?           4.000000
 0:?           4.000000
-0:395  Function Definition: TestGenMul(f1;f1;vf2;vf2;mf22;mf22; (temp void)
-0:391    Function Parameters: 
-0:391      'inF0' (temp float)
-0:391      'inF1' (temp float)
-0:391      'inFV0' (temp 2-component vector of float)
-0:391      'inFV1' (temp 2-component vector of float)
-0:391      'inFM0' (temp 2X2 matrix of float)
-0:391      'inFM1' (temp 2X2 matrix of float)
+0:439  Function Definition: TestGenMul(f1;f1;vf2;vf2;mf22;mf22; (temp void)
+0:435    Function Parameters: 
+0:435      'inF0' (temp float)
+0:435      'inF1' (temp float)
+0:435      'inFV0' (temp 2-component vector of float)
+0:435      'inFV1' (temp 2-component vector of float)
+0:435      'inFM0' (temp 2X2 matrix of float)
+0:435      'inFM1' (temp 2X2 matrix of float)
 0:?     Sequence
-0:392      move second child to first child (temp float)
-0:392        'r0' (temp float)
-0:392        component-wise multiply (temp float)
-0:392          'inF0' (temp float)
-0:392          'inF1' (temp float)
-0:392      move second child to first child (temp 2-component vector of float)
-0:392        'r1' (temp 2-component vector of float)
-0:392        vector-scale (temp 2-component vector of float)
-0:392          'inFV0' (temp 2-component vector of float)
-0:392          'inF0' (temp float)
-0:392      move second child to first child (temp 2-component vector of float)
-0:392        'r2' (temp 2-component vector of float)
-0:392        vector-scale (temp 2-component vector of float)
-0:392          'inF0' (temp float)
-0:392          'inFV0' (temp 2-component vector of float)
-0:392      move second child to first child (temp float)
-0:392        'r3' (temp float)
-0:392        dot-product (global float)
-0:392          'inFV0' (temp 2-component vector of float)
-0:392          'inFV1' (temp 2-component vector of float)
-0:392      move second child to first child (temp 2-component vector of float)
-0:392        'r4' (temp 2-component vector of float)
-0:392        matrix-times-vector (temp 2-component vector of float)
-0:392          'inFM0' (temp 2X2 matrix of float)
-0:392          'inFV0' (temp 2-component vector of float)
-0:392      move second child to first child (temp 2-component vector of float)
-0:392        'r5' (temp 2-component vector of float)
-0:392        vector-times-matrix (temp 2-component vector of float)
-0:392          'inFV0' (temp 2-component vector of float)
-0:392          'inFM0' (temp 2X2 matrix of float)
-0:392      move second child to first child (temp 2X2 matrix of float)
-0:392        'r6' (temp 2X2 matrix of float)
-0:392        matrix-scale (temp 2X2 matrix of float)
-0:392          'inFM0' (temp 2X2 matrix of float)
-0:392          'inF0' (temp float)
-0:392      move second child to first child (temp 2X2 matrix of float)
-0:392        'r7' (temp 2X2 matrix of float)
-0:392        matrix-scale (temp 2X2 matrix of float)
-0:392          'inF0' (temp float)
-0:392          'inFM0' (temp 2X2 matrix of float)
-0:392      move second child to first child (temp 2X2 matrix of float)
-0:392        'r8' (temp 2X2 matrix of float)
-0:392        matrix-multiply (temp 2X2 matrix of float)
-0:392          'inFM0' (temp 2X2 matrix of float)
-0:392          'inFM1' (temp 2X2 matrix of float)
-0:402  Function Definition: TestGenMul(f1;f1;vf3;vf3;mf33;mf33; (temp void)
-0:398    Function Parameters: 
-0:398      'inF0' (temp float)
-0:398      'inF1' (temp float)
-0:398      'inFV0' (temp 3-component vector of float)
-0:398      'inFV1' (temp 3-component vector of float)
-0:398      'inFM0' (temp 3X3 matrix of float)
-0:398      'inFM1' (temp 3X3 matrix of float)
+0:436      move second child to first child (temp float)
+0:436        'r0' (temp float)
+0:436        component-wise multiply (temp float)
+0:436          'inF0' (temp float)
+0:436          'inF1' (temp float)
+0:436      move second child to first child (temp 2-component vector of float)
+0:436        'r1' (temp 2-component vector of float)
+0:436        vector-scale (temp 2-component vector of float)
+0:436          'inFV0' (temp 2-component vector of float)
+0:436          'inF0' (temp float)
+0:436      move second child to first child (temp 2-component vector of float)
+0:436        'r2' (temp 2-component vector of float)
+0:436        vector-scale (temp 2-component vector of float)
+0:436          'inF0' (temp float)
+0:436          'inFV0' (temp 2-component vector of float)
+0:436      move second child to first child (temp float)
+0:436        'r3' (temp float)
+0:436        dot-product (global float)
+0:436          'inFV0' (temp 2-component vector of float)
+0:436          'inFV1' (temp 2-component vector of float)
+0:436      move second child to first child (temp 2-component vector of float)
+0:436        'r4' (temp 2-component vector of float)
+0:436        matrix-times-vector (temp 2-component vector of float)
+0:436          'inFM0' (temp 2X2 matrix of float)
+0:436          'inFV0' (temp 2-component vector of float)
+0:436      move second child to first child (temp 2-component vector of float)
+0:436        'r5' (temp 2-component vector of float)
+0:436        vector-times-matrix (temp 2-component vector of float)
+0:436          'inFV0' (temp 2-component vector of float)
+0:436          'inFM0' (temp 2X2 matrix of float)
+0:436      move second child to first child (temp 2X2 matrix of float)
+0:436        'r6' (temp 2X2 matrix of float)
+0:436        matrix-scale (temp 2X2 matrix of float)
+0:436          'inFM0' (temp 2X2 matrix of float)
+0:436          'inF0' (temp float)
+0:436      move second child to first child (temp 2X2 matrix of float)
+0:436        'r7' (temp 2X2 matrix of float)
+0:436        matrix-scale (temp 2X2 matrix of float)
+0:436          'inF0' (temp float)
+0:436          'inFM0' (temp 2X2 matrix of float)
+0:436      move second child to first child (temp 2X2 matrix of float)
+0:436        'r8' (temp 2X2 matrix of float)
+0:436        matrix-multiply (temp 2X2 matrix of float)
+0:436          'inFM0' (temp 2X2 matrix of float)
+0:436          'inFM1' (temp 2X2 matrix of float)
+0:446  Function Definition: TestGenMul(f1;f1;vf3;vf3;mf33;mf33; (temp void)
+0:442    Function Parameters: 
+0:442      'inF0' (temp float)
+0:442      'inF1' (temp float)
+0:442      'inFV0' (temp 3-component vector of float)
+0:442      'inFV1' (temp 3-component vector of float)
+0:442      'inFM0' (temp 3X3 matrix of float)
+0:442      'inFM1' (temp 3X3 matrix of float)
 0:?     Sequence
-0:399      move second child to first child (temp float)
-0:399        'r0' (temp float)
-0:399        component-wise multiply (temp float)
-0:399          'inF0' (temp float)
-0:399          'inF1' (temp float)
-0:399      move second child to first child (temp 3-component vector of float)
-0:399        'r1' (temp 3-component vector of float)
-0:399        vector-scale (temp 3-component vector of float)
-0:399          'inFV0' (temp 3-component vector of float)
-0:399          'inF0' (temp float)
-0:399      move second child to first child (temp 3-component vector of float)
-0:399        'r2' (temp 3-component vector of float)
-0:399        vector-scale (temp 3-component vector of float)
-0:399          'inF0' (temp float)
-0:399          'inFV0' (temp 3-component vector of float)
-0:399      move second child to first child (temp float)
-0:399        'r3' (temp float)
-0:399        dot-product (global float)
-0:399          'inFV0' (temp 3-component vector of float)
-0:399          'inFV1' (temp 3-component vector of float)
-0:399      move second child to first child (temp 3-component vector of float)
-0:399        'r4' (temp 3-component vector of float)
-0:399        matrix-times-vector (temp 3-component vector of float)
-0:399          'inFM0' (temp 3X3 matrix of float)
-0:399          'inFV0' (temp 3-component vector of float)
-0:399      move second child to first child (temp 3-component vector of float)
-0:399        'r5' (temp 3-component vector of float)
-0:399        vector-times-matrix (temp 3-component vector of float)
-0:399          'inFV0' (temp 3-component vector of float)
-0:399          'inFM0' (temp 3X3 matrix of float)
-0:399      move second child to first child (temp 3X3 matrix of float)
-0:399        'r6' (temp 3X3 matrix of float)
-0:399        matrix-scale (temp 3X3 matrix of float)
-0:399          'inFM0' (temp 3X3 matrix of float)
-0:399          'inF0' (temp float)
-0:399      move second child to first child (temp 3X3 matrix of float)
-0:399        'r7' (temp 3X3 matrix of float)
-0:399        matrix-scale (temp 3X3 matrix of float)
-0:399          'inF0' (temp float)
-0:399          'inFM0' (temp 3X3 matrix of float)
-0:399      move second child to first child (temp 3X3 matrix of float)
-0:399        'r8' (temp 3X3 matrix of float)
-0:399        matrix-multiply (temp 3X3 matrix of float)
-0:399          'inFM0' (temp 3X3 matrix of float)
-0:399          'inFM1' (temp 3X3 matrix of float)
-0:408  Function Definition: TestGenMul(f1;f1;vf4;vf4;mf44;mf44; (temp void)
-0:405    Function Parameters: 
-0:405      'inF0' (temp float)
-0:405      'inF1' (temp float)
-0:405      'inFV0' (temp 4-component vector of float)
-0:405      'inFV1' (temp 4-component vector of float)
-0:405      'inFM0' (temp 4X4 matrix of float)
-0:405      'inFM1' (temp 4X4 matrix of float)
+0:443      move second child to first child (temp float)
+0:443        'r0' (temp float)
+0:443        component-wise multiply (temp float)
+0:443          'inF0' (temp float)
+0:443          'inF1' (temp float)
+0:443      move second child to first child (temp 3-component vector of float)
+0:443        'r1' (temp 3-component vector of float)
+0:443        vector-scale (temp 3-component vector of float)
+0:443          'inFV0' (temp 3-component vector of float)
+0:443          'inF0' (temp float)
+0:443      move second child to first child (temp 3-component vector of float)
+0:443        'r2' (temp 3-component vector of float)
+0:443        vector-scale (temp 3-component vector of float)
+0:443          'inF0' (temp float)
+0:443          'inFV0' (temp 3-component vector of float)
+0:443      move second child to first child (temp float)
+0:443        'r3' (temp float)
+0:443        dot-product (global float)
+0:443          'inFV0' (temp 3-component vector of float)
+0:443          'inFV1' (temp 3-component vector of float)
+0:443      move second child to first child (temp 3-component vector of float)
+0:443        'r4' (temp 3-component vector of float)
+0:443        matrix-times-vector (temp 3-component vector of float)
+0:443          'inFM0' (temp 3X3 matrix of float)
+0:443          'inFV0' (temp 3-component vector of float)
+0:443      move second child to first child (temp 3-component vector of float)
+0:443        'r5' (temp 3-component vector of float)
+0:443        vector-times-matrix (temp 3-component vector of float)
+0:443          'inFV0' (temp 3-component vector of float)
+0:443          'inFM0' (temp 3X3 matrix of float)
+0:443      move second child to first child (temp 3X3 matrix of float)
+0:443        'r6' (temp 3X3 matrix of float)
+0:443        matrix-scale (temp 3X3 matrix of float)
+0:443          'inFM0' (temp 3X3 matrix of float)
+0:443          'inF0' (temp float)
+0:443      move second child to first child (temp 3X3 matrix of float)
+0:443        'r7' (temp 3X3 matrix of float)
+0:443        matrix-scale (temp 3X3 matrix of float)
+0:443          'inF0' (temp float)
+0:443          'inFM0' (temp 3X3 matrix of float)
+0:443      move second child to first child (temp 3X3 matrix of float)
+0:443        'r8' (temp 3X3 matrix of float)
+0:443        matrix-multiply (temp 3X3 matrix of float)
+0:443          'inFM0' (temp 3X3 matrix of float)
+0:443          'inFM1' (temp 3X3 matrix of float)
+0:452  Function Definition: TestGenMul(f1;f1;vf4;vf4;mf44;mf44; (temp void)
+0:449    Function Parameters: 
+0:449      'inF0' (temp float)
+0:449      'inF1' (temp float)
+0:449      'inFV0' (temp 4-component vector of float)
+0:449      'inFV1' (temp 4-component vector of float)
+0:449      'inFM0' (temp 4X4 matrix of float)
+0:449      'inFM1' (temp 4X4 matrix of float)
 0:?     Sequence
-0:406      move second child to first child (temp float)
-0:406        'r0' (temp float)
-0:406        component-wise multiply (temp float)
-0:406          'inF0' (temp float)
-0:406          'inF1' (temp float)
-0:406      move second child to first child (temp 4-component vector of float)
-0:406        'r1' (temp 4-component vector of float)
-0:406        vector-scale (temp 4-component vector of float)
-0:406          'inFV0' (temp 4-component vector of float)
-0:406          'inF0' (temp float)
-0:406      move second child to first child (temp 4-component vector of float)
-0:406        'r2' (temp 4-component vector of float)
-0:406        vector-scale (temp 4-component vector of float)
-0:406          'inF0' (temp float)
-0:406          'inFV0' (temp 4-component vector of float)
-0:406      move second child to first child (temp float)
-0:406        'r3' (temp float)
-0:406        dot-product (global float)
-0:406          'inFV0' (temp 4-component vector of float)
-0:406          'inFV1' (temp 4-component vector of float)
-0:406      move second child to first child (temp 4-component vector of float)
-0:406        'r4' (temp 4-component vector of float)
-0:406        matrix-times-vector (temp 4-component vector of float)
-0:406          'inFM0' (temp 4X4 matrix of float)
-0:406          'inFV0' (temp 4-component vector of float)
-0:406      move second child to first child (temp 4-component vector of float)
-0:406        'r5' (temp 4-component vector of float)
-0:406        vector-times-matrix (temp 4-component vector of float)
-0:406          'inFV0' (temp 4-component vector of float)
-0:406          'inFM0' (temp 4X4 matrix of float)
-0:406      move second child to first child (temp 4X4 matrix of float)
-0:406        'r6' (temp 4X4 matrix of float)
-0:406        matrix-scale (temp 4X4 matrix of float)
-0:406          'inFM0' (temp 4X4 matrix of float)
-0:406          'inF0' (temp float)
-0:406      move second child to first child (temp 4X4 matrix of float)
-0:406        'r7' (temp 4X4 matrix of float)
-0:406        matrix-scale (temp 4X4 matrix of float)
-0:406          'inF0' (temp float)
-0:406          'inFM0' (temp 4X4 matrix of float)
-0:406      move second child to first child (temp 4X4 matrix of float)
-0:406        'r8' (temp 4X4 matrix of float)
-0:406        matrix-multiply (temp 4X4 matrix of float)
-0:406          'inFM0' (temp 4X4 matrix of float)
-0:406          'inFM1' (temp 4X4 matrix of float)
+0:450      move second child to first child (temp float)
+0:450        'r0' (temp float)
+0:450        component-wise multiply (temp float)
+0:450          'inF0' (temp float)
+0:450          'inF1' (temp float)
+0:450      move second child to first child (temp 4-component vector of float)
+0:450        'r1' (temp 4-component vector of float)
+0:450        vector-scale (temp 4-component vector of float)
+0:450          'inFV0' (temp 4-component vector of float)
+0:450          'inF0' (temp float)
+0:450      move second child to first child (temp 4-component vector of float)
+0:450        'r2' (temp 4-component vector of float)
+0:450        vector-scale (temp 4-component vector of float)
+0:450          'inF0' (temp float)
+0:450          'inFV0' (temp 4-component vector of float)
+0:450      move second child to first child (temp float)
+0:450        'r3' (temp float)
+0:450        dot-product (global float)
+0:450          'inFV0' (temp 4-component vector of float)
+0:450          'inFV1' (temp 4-component vector of float)
+0:450      move second child to first child (temp 4-component vector of float)
+0:450        'r4' (temp 4-component vector of float)
+0:450        matrix-times-vector (temp 4-component vector of float)
+0:450          'inFM0' (temp 4X4 matrix of float)
+0:450          'inFV0' (temp 4-component vector of float)
+0:450      move second child to first child (temp 4-component vector of float)
+0:450        'r5' (temp 4-component vector of float)
+0:450        vector-times-matrix (temp 4-component vector of float)
+0:450          'inFV0' (temp 4-component vector of float)
+0:450          'inFM0' (temp 4X4 matrix of float)
+0:450      move second child to first child (temp 4X4 matrix of float)
+0:450        'r6' (temp 4X4 matrix of float)
+0:450        matrix-scale (temp 4X4 matrix of float)
+0:450          'inFM0' (temp 4X4 matrix of float)
+0:450          'inF0' (temp float)
+0:450      move second child to first child (temp 4X4 matrix of float)
+0:450        'r7' (temp 4X4 matrix of float)
+0:450        matrix-scale (temp 4X4 matrix of float)
+0:450          'inF0' (temp float)
+0:450          'inFM0' (temp 4X4 matrix of float)
+0:450      move second child to first child (temp 4X4 matrix of float)
+0:450        'r8' (temp 4X4 matrix of float)
+0:450        matrix-multiply (temp 4X4 matrix of float)
+0:450          'inFM0' (temp 4X4 matrix of float)
+0:450          'inFM1' (temp 4X4 matrix of float)
 0:?   Linker Objects
+0:?     'gs_ua' (temp uint)
+0:?     'gs_ub' (temp uint)
+0:?     'gs_uc' (temp uint)
+0:?     'gs_ua2' (temp 2-component vector of uint)
+0:?     'gs_ub2' (temp 2-component vector of uint)
+0:?     'gs_uc2' (temp 2-component vector of uint)
+0:?     'gs_ua3' (temp 3-component vector of uint)
+0:?     'gs_ub3' (temp 3-component vector of uint)
+0:?     'gs_uc3' (temp 3-component vector of uint)
+0:?     'gs_ua4' (temp 4-component vector of uint)
+0:?     'gs_ub4' (temp 4-component vector of uint)
+0:?     'gs_uc4' (temp 4-component vector of uint)
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 1209
+// Id's are bound by 1253
 
                               Capability Shader
                               Capability DerivativeControl
@@ -2841,60 +2929,76 @@ gl_FragCoord origin is upper left
                               Name 43  "inFM0"
                               Name 44  "inFM1"
                               Name 47  "inF0"
-                              Name 62  "inF1"
-                              Name 69  "inF2"
-                              Name 115  "ResType"
-                              Name 185  "inF0"
-                              Name 199  "inF1"
-                              Name 206  "inF2"
-                              Name 264  "ResType"
-                              Name 347  "inF0"
-                              Name 361  "inF1"
-                              Name 368  "inF2"
-                              Name 429  "ResType"
-                              Name 511  "inF0"
-                              Name 525  "inF1"
-                              Name 532  "inF2"
-                              Name 598  "ResType"
-                              Name 681  "inF0"
-                              Name 695  "inF1"
-                              Name 710  "inF2"
-                              Name 753  "ResType"
-                              Name 818  "inF0"
-                              Name 832  "inF1"
-                              Name 847  "inF2"
-                              Name 893  "ResType"
-                              Name 958  "inF0"
-                              Name 972  "inF1"
-                              Name 987  "inF2"
-                              Name 1036  "ResType"
-                              Name 1101  "r0"
-                              Name 1105  "r1"
-                              Name 1109  "r2"
-                              Name 1113  "r3"
-                              Name 1117  "r4"
-                              Name 1121  "r5"
-                              Name 1125  "r6"
-                              Name 1129  "r7"
-                              Name 1133  "r8"
-                              Name 1137  "r0"
-                              Name 1141  "r1"
-                              Name 1145  "r2"
-                              Name 1149  "r3"
-                              Name 1153  "r4"
-                              Name 1157  "r5"
-                              Name 1161  "r6"
-                              Name 1165  "r7"
-                              Name 1169  "r8"
-                              Name 1173  "r0"
-                              Name 1177  "r1"
-                              Name 1181  "r2"
-                              Name 1185  "r3"
-                              Name 1189  "r4"
-                              Name 1193  "r5"
-                              Name 1197  "r6"
-                              Name 1201  "r7"
-                              Name 1205  "r8"
+                              Name 66  "inU0"
+                              Name 72  "inF1"
+                              Name 79  "inF2"
+                              Name 123  "ResType"
+                              Name 193  "inF0"
+                              Name 211  "inU0"
+                              Name 217  "inF1"
+                              Name 224  "inF2"
+                              Name 280  "ResType"
+                              Name 363  "inF0"
+                              Name 381  "inU0"
+                              Name 387  "inF1"
+                              Name 394  "inF2"
+                              Name 453  "ResType"
+                              Name 535  "inF0"
+                              Name 553  "inU0"
+                              Name 559  "inF1"
+                              Name 566  "inF2"
+                              Name 630  "ResType"
+                              Name 713  "inF0"
+                              Name 727  "inF1"
+                              Name 742  "inF2"
+                              Name 785  "ResType"
+                              Name 850  "inF0"
+                              Name 864  "inF1"
+                              Name 879  "inF2"
+                              Name 925  "ResType"
+                              Name 990  "inF0"
+                              Name 1004  "inF1"
+                              Name 1019  "inF2"
+                              Name 1068  "ResType"
+                              Name 1133  "r0"
+                              Name 1137  "r1"
+                              Name 1141  "r2"
+                              Name 1145  "r3"
+                              Name 1149  "r4"
+                              Name 1153  "r5"
+                              Name 1157  "r6"
+                              Name 1161  "r7"
+                              Name 1165  "r8"
+                              Name 1169  "r0"
+                              Name 1173  "r1"
+                              Name 1177  "r2"
+                              Name 1181  "r3"
+                              Name 1185  "r4"
+                              Name 1189  "r5"
+                              Name 1193  "r6"
+                              Name 1197  "r7"
+                              Name 1201  "r8"
+                              Name 1205  "r0"
+                              Name 1209  "r1"
+                              Name 1213  "r2"
+                              Name 1217  "r3"
+                              Name 1221  "r4"
+                              Name 1225  "r5"
+                              Name 1229  "r6"
+                              Name 1233  "r7"
+                              Name 1237  "r8"
+                              Name 1241  "gs_ua"
+                              Name 1242  "gs_ub"
+                              Name 1243  "gs_uc"
+                              Name 1244  "gs_ua2"
+                              Name 1245  "gs_ub2"
+                              Name 1246  "gs_uc2"
+                              Name 1247  "gs_ua3"
+                              Name 1248  "gs_ub3"
+                              Name 1249  "gs_uc3"
+                              Name 1250  "gs_ua4"
+                              Name 1251  "gs_ub4"
+                              Name 1252  "gs_uc4"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -2915,84 +3019,92 @@ gl_FragCoord origin is upper left
               37:             TypePointer Function 36
               38:             TypeFunction 2 7(ptr) 7(ptr) 35(ptr) 35(ptr) 37(ptr) 37(ptr)
               49:             TypeBool
-              73:    6(float) Constant 0
-              82:             TypeInt 32 0
-              83:     82(int) Constant 7
-             103:             TypeInt 32 1
-             104:    103(int) Constant 7
-    115(ResType):             TypeStruct 6(float) 103(int)
-             132:    6(float) Constant 1050288283
-             147:    6(float) Constant 1065353216
-             150:     82(int) Constant 2
-             210:    8(fvec2) ConstantComposite 73 73
-             211:             TypeVector 49(bool) 2
-             221:             TypeVector 82(int) 2
-             222:     82(int) Constant 3
-             223:  221(ivec2) ConstantComposite 83 222
-             263:             TypeVector 103(int) 2
-    264(ResType):             TypeStruct 8(fvec2) 263(ivec2)
-             307:    6(float) Constant 1073741824
-             309:     82(int) Constant 1
-             310:  221(ivec2) ConstantComposite 309 150
-             345:    8(fvec2) ConstantComposite 147 307
-             372:   21(fvec3) ConstantComposite 73 73 73
-             373:             TypeVector 49(bool) 3
-             383:             TypeVector 82(int) 3
-             384:     82(int) Constant 5
-             385:  383(ivec3) ConstantComposite 83 222 384
-             428:             TypeVector 103(int) 3
-    429(ResType):             TypeStruct 21(fvec3) 428(ivec3)
-             473:  383(ivec3) ConstantComposite 309 150 222
-             508:    6(float) Constant 1077936128
-             509:   21(fvec3) ConstantComposite 147 307 508
-             536:   34(fvec4) ConstantComposite 73 73 73 73
-             537:             TypeVector 49(bool) 4
-             547:             TypeVector 82(int) 4
-             548:  547(ivec4) ConstantComposite 83 222 384 150
-             597:             TypeVector 103(int) 4
-    598(ResType):             TypeStruct 34(fvec4) 597(ivec4)
-             642:     82(int) Constant 4
-             643:  547(ivec4) ConstantComposite 309 150 222 642
-             678:    6(float) Constant 1082130432
-             679:   34(fvec4) ConstantComposite 147 307 508 678
-             701:          10 ConstantComposite 210 210
-             702:             TypeMatrix 211(bvec2) 2
-    753(ResType):             TypeStruct 10 263(ivec2)
-             815:    8(fvec2) ConstantComposite 307 307
-             816:          10 ConstantComposite 815 815
-             838:          23 ConstantComposite 372 372 372
-             839:             TypeMatrix 373(bvec3) 3
-    893(ResType):             TypeStruct 23 428(ivec3)
-             955:   21(fvec3) ConstantComposite 508 508 508
-             956:          23 ConstantComposite 955 955 955
-             978:          36 ConstantComposite 536 536 536 536
-             979:             TypeMatrix 537(bvec4) 4
-   1036(ResType):             TypeStruct 36 597(ivec4)
-            1098:   34(fvec4) ConstantComposite 678 678 678 678
-            1099:          36 ConstantComposite 1098 1098 1098 1098
+              60:             TypeInt 32 1
+              63:             TypeInt 32 0
+              65:             TypePointer Function 63(int)
+              83:    6(float) Constant 0
+              92:     63(int) Constant 7
+             112:     60(int) Constant 7
+    123(ResType):             TypeStruct 6(float) 60(int)
+             140:    6(float) Constant 1050288283
+             155:    6(float) Constant 1065353216
+             158:     63(int) Constant 2
+             205:             TypeVector 60(int) 2
+             208:             TypeVector 63(int) 2
+             210:             TypePointer Function 208(ivec2)
+             228:    8(fvec2) ConstantComposite 83 83
+             229:             TypeVector 49(bool) 2
+             239:     63(int) Constant 3
+             240:  208(ivec2) ConstantComposite 92 239
+    280(ResType):             TypeStruct 8(fvec2) 205(ivec2)
+             323:    6(float) Constant 1073741824
+             325:     63(int) Constant 1
+             326:  208(ivec2) ConstantComposite 325 158
+             361:    8(fvec2) ConstantComposite 155 323
+             375:             TypeVector 60(int) 3
+             378:             TypeVector 63(int) 3
+             380:             TypePointer Function 378(ivec3)
+             398:   21(fvec3) ConstantComposite 83 83 83
+             399:             TypeVector 49(bool) 3
+             409:     63(int) Constant 5
+             410:  378(ivec3) ConstantComposite 92 239 409
+    453(ResType):             TypeStruct 21(fvec3) 375(ivec3)
+             497:  378(ivec3) ConstantComposite 325 158 239
+             532:    6(float) Constant 1077936128
+             533:   21(fvec3) ConstantComposite 155 323 532
+             547:             TypeVector 60(int) 4
+             550:             TypeVector 63(int) 4
+             552:             TypePointer Function 550(ivec4)
+             570:   34(fvec4) ConstantComposite 83 83 83 83
+             571:             TypeVector 49(bool) 4
+             581:  550(ivec4) ConstantComposite 92 239 409 158
+    630(ResType):             TypeStruct 34(fvec4) 547(ivec4)
+             674:     63(int) Constant 4
+             675:  550(ivec4) ConstantComposite 325 158 239 674
+             710:    6(float) Constant 1082130432
+             711:   34(fvec4) ConstantComposite 155 323 532 710
+             733:          10 ConstantComposite 228 228
+             734:             TypeMatrix 229(bvec2) 2
+    785(ResType):             TypeStruct 10 205(ivec2)
+             847:    8(fvec2) ConstantComposite 323 323
+             848:          10 ConstantComposite 847 847
+             870:          23 ConstantComposite 398 398 398
+             871:             TypeMatrix 399(bvec3) 3
+    925(ResType):             TypeStruct 23 375(ivec3)
+             987:   21(fvec3) ConstantComposite 532 532 532
+             988:          23 ConstantComposite 987 987 987
+            1010:          36 ConstantComposite 570 570 570 570
+            1011:             TypeMatrix 571(bvec4) 4
+   1068(ResType):             TypeStruct 36 547(ivec4)
+            1130:   34(fvec4) ConstantComposite 710 710 710 710
+            1131:          36 ConstantComposite 1130 1130 1130 1130
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
         47(inF0):      7(ptr) Variable Function
-        62(inF1):      7(ptr) Variable Function
-        69(inF2):      7(ptr) Variable Function
-       185(inF0):      9(ptr) Variable Function
-       199(inF1):      9(ptr) Variable Function
-       206(inF2):      9(ptr) Variable Function
-       347(inF0):     22(ptr) Variable Function
-       361(inF1):     22(ptr) Variable Function
-       368(inF2):     22(ptr) Variable Function
-       511(inF0):     35(ptr) Variable Function
-       525(inF1):     35(ptr) Variable Function
-       532(inF2):     35(ptr) Variable Function
-       681(inF0):     11(ptr) Variable Function
-       695(inF1):     11(ptr) Variable Function
-       710(inF2):     11(ptr) Variable Function
-       818(inF0):     24(ptr) Variable Function
-       832(inF1):     24(ptr) Variable Function
-       847(inF2):     24(ptr) Variable Function
-       958(inF0):     37(ptr) Variable Function
-       972(inF1):     37(ptr) Variable Function
-       987(inF2):     37(ptr) Variable Function
+        66(inU0):     65(ptr) Variable Function
+        72(inF1):      7(ptr) Variable Function
+        79(inF2):      7(ptr) Variable Function
+       193(inF0):      9(ptr) Variable Function
+       211(inU0):    210(ptr) Variable Function
+       217(inF1):      9(ptr) Variable Function
+       224(inF2):      9(ptr) Variable Function
+       363(inF0):     22(ptr) Variable Function
+       381(inU0):    380(ptr) Variable Function
+       387(inF1):     22(ptr) Variable Function
+       394(inF2):     22(ptr) Variable Function
+       535(inF0):     35(ptr) Variable Function
+       553(inU0):    552(ptr) Variable Function
+       559(inF1):     35(ptr) Variable Function
+       566(inF2):     35(ptr) Variable Function
+       713(inF0):     11(ptr) Variable Function
+       727(inF1):     11(ptr) Variable Function
+       742(inF2):     11(ptr) Variable Function
+       850(inF0):     24(ptr) Variable Function
+       864(inF1):     24(ptr) Variable Function
+       879(inF2):     24(ptr) Variable Function
+       990(inF0):     37(ptr) Variable Function
+      1004(inF1):     37(ptr) Variable Function
+      1019(inF2):     37(ptr) Variable Function
               48:    6(float) Load 47(inF0)
               50:    49(bool) All 48
               51:    6(float) Load 47(inF0)
@@ -3004,124 +3116,130 @@ gl_FragCoord origin is upper left
               57:    6(float) Load 47(inF0)
               58:    6(float) ExtInst 1(GLSL.std.450) 16(Asin) 57
               59:    6(float) Load 47(inF0)
-              60:    6(float) ExtInst 1(GLSL.std.450) 18(Atan) 59
-              61:    6(float) Load 47(inF0)
-              63:    6(float) Load 62(inF1)
-              64:    6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 61 63
-              65:    6(float) Load 47(inF0)
-              66:    6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 65
-              67:    6(float) Load 47(inF0)
-              68:    6(float) Load 62(inF1)
-              70:    6(float) Load 69(inF2)
-              71:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 67 68 70
-              72:    6(float) Load 47(inF0)
-              74:    49(bool) FOrdLessThan 72 73
-                              SelectionMerge 76 None
-                              BranchConditional 74 75 76
-              75:               Label
+              61:     60(int) Bitcast 59
+              62:    6(float) Load 47(inF0)
+              64:     63(int) Bitcast 62
+              67:     63(int) Load 66(inU0)
+              68:    6(float) Bitcast 67
+              69:    6(float) Load 47(inF0)
+              70:    6(float) ExtInst 1(GLSL.std.450) 18(Atan) 69
+              71:    6(float) Load 47(inF0)
+              73:    6(float) Load 72(inF1)
+              74:    6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 71 73
+              75:    6(float) Load 47(inF0)
+              76:    6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 75
+              77:    6(float) Load 47(inF0)
+              78:    6(float) Load 72(inF1)
+              80:    6(float) Load 79(inF2)
+              81:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 77 78 80
+              82:    6(float) Load 47(inF0)
+              84:    49(bool) FOrdLessThan 82 83
+                              SelectionMerge 86 None
+                              BranchConditional 84 85 86
+              85:               Label
                                 Kill
-              76:             Label
-              78:    6(float) Load 47(inF0)
-              79:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 78
-              80:    6(float) Load 47(inF0)
-              81:    6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 80
-              84:     82(int) BitCount 83
-              85:    6(float) Load 47(inF0)
-              86:    6(float) DPdx 85
-              87:    6(float) Load 47(inF0)
-              88:    6(float) DPdxCoarse 87
-              89:    6(float) Load 47(inF0)
-              90:    6(float) DPdxFine 89
-              91:    6(float) Load 47(inF0)
-              92:    6(float) DPdy 91
-              93:    6(float) Load 47(inF0)
-              94:    6(float) DPdyCoarse 93
-              95:    6(float) Load 47(inF0)
-              96:    6(float) DPdyFine 95
-              97:    6(float) Load 47(inF0)
-              98:    6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 97
-              99:    6(float) Load 47(inF0)
-             100:    6(float) ExtInst 1(GLSL.std.450) 27(Exp) 99
-             101:    6(float) Load 47(inF0)
-             102:    6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 101
-             105:    103(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 104
-             106:    103(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 104
-             107:    6(float) Load 47(inF0)
-             108:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 107
-             109:    6(float) Load 47(inF0)
-             110:    6(float) Load 62(inF1)
-             111:    6(float) FMod 109 110
-             112:    6(float) Load 47(inF0)
-             113:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 112
-             114:    6(float) Load 47(inF0)
-             116:115(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 114
-             117:    103(int) CompositeExtract 116 1
-                              Store 62(inF1) 117
-             118:    6(float) CompositeExtract 116 0
-             119:    6(float) Load 47(inF0)
-             120:    6(float) Fwidth 119
-             121:    6(float) Load 47(inF0)
-             122:    49(bool) IsInf 121
-             123:    6(float) Load 47(inF0)
-             124:    49(bool) IsNan 123
-             125:    6(float) Load 47(inF0)
-             126:    6(float) Load 62(inF1)
-             127:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 125 126
-             128:    6(float) Load 47(inF0)
-             129:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 128
-             130:    6(float) Load 47(inF0)
-             131:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 130
-             133:    6(float) FMul 131 132
-             134:    6(float) Load 47(inF0)
-             135:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 134
+              86:             Label
+              88:    6(float) Load 47(inF0)
+              89:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 88
+              90:    6(float) Load 47(inF0)
+              91:    6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 90
+              93:     63(int) BitCount 92
+              94:    6(float) Load 47(inF0)
+              95:    6(float) DPdx 94
+              96:    6(float) Load 47(inF0)
+              97:    6(float) DPdxCoarse 96
+              98:    6(float) Load 47(inF0)
+              99:    6(float) DPdxFine 98
+             100:    6(float) Load 47(inF0)
+             101:    6(float) DPdy 100
+             102:    6(float) Load 47(inF0)
+             103:    6(float) DPdyCoarse 102
+             104:    6(float) Load 47(inF0)
+             105:    6(float) DPdyFine 104
+             106:    6(float) Load 47(inF0)
+             107:    6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 106
+             108:    6(float) Load 47(inF0)
+             109:    6(float) ExtInst 1(GLSL.std.450) 27(Exp) 108
+             110:    6(float) Load 47(inF0)
+             111:    6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 110
+             113:     60(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 112
+             114:     60(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 112
+             115:    6(float) Load 47(inF0)
+             116:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 115
+             117:    6(float) Load 47(inF0)
+             118:    6(float) Load 72(inF1)
+             119:    6(float) FMod 117 118
+             120:    6(float) Load 47(inF0)
+             121:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 120
+             122:    6(float) Load 47(inF0)
+             124:123(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 122
+             125:     60(int) CompositeExtract 124 1
+                              Store 72(inF1) 125
+             126:    6(float) CompositeExtract 124 0
+             127:    6(float) Load 47(inF0)
+             128:    6(float) Fwidth 127
+             129:    6(float) Load 47(inF0)
+             130:    49(bool) IsInf 129
+             131:    6(float) Load 47(inF0)
+             132:    49(bool) IsNan 131
+             133:    6(float) Load 47(inF0)
+             134:    6(float) Load 72(inF1)
+             135:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 133 134
              136:    6(float) Load 47(inF0)
-             137:    6(float) Load 62(inF1)
-             138:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 136 137
-             139:    6(float) Load 47(inF0)
-             140:    6(float) Load 62(inF1)
-             141:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 139 140
+             137:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 136
+             138:    6(float) Load 47(inF0)
+             139:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 138
+             141:    6(float) FMul 139 140
              142:    6(float) Load 47(inF0)
-             143:    6(float) Load 62(inF1)
-             144:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 142 143
-             145:    6(float) Load 47(inF0)
-             146:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 145
-             148:    6(float) Load 47(inF0)
-             149:    6(float) FDiv 147 148
-             151:     82(int) BitReverse 150
-             152:    6(float) Load 47(inF0)
-             153:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 152
-             154:    6(float) Load 47(inF0)
-             155:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 154
+             143:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 142
+             144:    6(float) Load 47(inF0)
+             145:    6(float) Load 72(inF1)
+             146:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 144 145
+             147:    6(float) Load 47(inF0)
+             148:    6(float) Load 72(inF1)
+             149:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 147 148
+             150:    6(float) Load 47(inF0)
+             151:    6(float) Load 72(inF1)
+             152:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 150 151
+             153:    6(float) Load 47(inF0)
+             154:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 153
              156:    6(float) Load 47(inF0)
-             157:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 156 73 147
-             158:    6(float) Load 47(inF0)
-             159:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 158
+             157:    6(float) FDiv 155 156
+             159:     63(int) BitReverse 158
              160:    6(float) Load 47(inF0)
-             161:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 160
+             161:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 160
              162:    6(float) Load 47(inF0)
-             163:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 162
-                              Store 62(inF1) 163
+             163:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 162
              164:    6(float) Load 47(inF0)
-             165:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 164
-                              Store 69(inF2) 165
+             165:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 164 83 155
              166:    6(float) Load 47(inF0)
-             167:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 166
+             167:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 166
              168:    6(float) Load 47(inF0)
-             169:    6(float) Load 62(inF1)
-             170:    6(float) Load 69(inF2)
-             171:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 168 169 170
+             169:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 168
+             170:    6(float) Load 47(inF0)
+             171:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 170
+                              Store 72(inF1) 171
              172:    6(float) Load 47(inF0)
-             173:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 172
+             173:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 172
+                              Store 79(inF2) 173
              174:    6(float) Load 47(inF0)
-             175:    6(float) Load 62(inF1)
-             176:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 174 175
-             177:    6(float) Load 47(inF0)
-             178:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 177
-             179:    6(float) Load 47(inF0)
-             180:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 179
-             181:    6(float) Load 47(inF0)
-             182:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 181
-                              ReturnValue 73
+             175:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 174
+             176:    6(float) Load 47(inF0)
+             177:    6(float) Load 72(inF1)
+             178:    6(float) Load 79(inF2)
+             179:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 176 177 178
+             180:    6(float) Load 47(inF0)
+             181:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 180
+             182:    6(float) Load 47(inF0)
+             183:    6(float) Load 72(inF1)
+             184:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 182 183
+             185:    6(float) Load 47(inF0)
+             186:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 185
+             187:    6(float) Load 47(inF0)
+             188:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 187
+             189:    6(float) Load 47(inF0)
+             190:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 189
+                              ReturnValue 83
                               FunctionEnd
 19(TestGenMul(f1;f1;vf2;vf2;mf22;mf22;):           2 Function None 12
         13(inF0):      7(ptr) FunctionParameter
@@ -3131,51 +3249,51 @@ gl_FragCoord origin is upper left
        17(inFM0):     11(ptr) FunctionParameter
        18(inFM1):     11(ptr) FunctionParameter
               20:             Label
-        1101(r0):      7(ptr) Variable Function
-        1105(r1):      9(ptr) Variable Function
-        1109(r2):      9(ptr) Variable Function
-        1113(r3):      7(ptr) Variable Function
-        1117(r4):      9(ptr) Variable Function
-        1121(r5):      9(ptr) Variable Function
-        1125(r6):     11(ptr) Variable Function
-        1129(r7):     11(ptr) Variable Function
-        1133(r8):     11(ptr) Variable Function
-            1102:    6(float) Load 13(inF0)
-            1103:    6(float) Load 14(inF1)
-            1104:    6(float) FMul 1102 1103
-                              Store 1101(r0) 1104
-            1106:    8(fvec2) Load 15(inFV0)
-            1107:    6(float) Load 13(inF0)
-            1108:    8(fvec2) VectorTimesScalar 1106 1107
-                              Store 1105(r1) 1108
-            1110:    6(float) Load 13(inF0)
-            1111:    8(fvec2) Load 15(inFV0)
-            1112:    8(fvec2) VectorTimesScalar 1111 1110
-                              Store 1109(r2) 1112
-            1114:    8(fvec2) Load 15(inFV0)
-            1115:    8(fvec2) Load 16(inFV1)
-            1116:    6(float) Dot 1114 1115
-                              Store 1113(r3) 1116
-            1118:          10 Load 17(inFM0)
-            1119:    8(fvec2) Load 15(inFV0)
-            1120:    8(fvec2) MatrixTimesVector 1118 1119
-                              Store 1117(r4) 1120
-            1122:    8(fvec2) Load 15(inFV0)
-            1123:          10 Load 17(inFM0)
-            1124:    8(fvec2) VectorTimesMatrix 1122 1123
-                              Store 1121(r5) 1124
-            1126:          10 Load 17(inFM0)
-            1127:    6(float) Load 13(inF0)
-            1128:          10 MatrixTimesScalar 1126 1127
-                              Store 1125(r6) 1128
-            1130:    6(float) Load 13(inF0)
-            1131:          10 Load 17(inFM0)
-            1132:          10 MatrixTimesScalar 1131 1130
-                              Store 1129(r7) 1132
-            1134:          10 Load 17(inFM0)
-            1135:          10 Load 18(inFM1)
-            1136:          10 MatrixTimesMatrix 1134 1135
-                              Store 1133(r8) 1136
+        1133(r0):      7(ptr) Variable Function
+        1137(r1):      9(ptr) Variable Function
+        1141(r2):      9(ptr) Variable Function
+        1145(r3):      7(ptr) Variable Function
+        1149(r4):      9(ptr) Variable Function
+        1153(r5):      9(ptr) Variable Function
+        1157(r6):     11(ptr) Variable Function
+        1161(r7):     11(ptr) Variable Function
+        1165(r8):     11(ptr) Variable Function
+            1134:    6(float) Load 13(inF0)
+            1135:    6(float) Load 14(inF1)
+            1136:    6(float) FMul 1134 1135
+                              Store 1133(r0) 1136
+            1138:    8(fvec2) Load 15(inFV0)
+            1139:    6(float) Load 13(inF0)
+            1140:    8(fvec2) VectorTimesScalar 1138 1139
+                              Store 1137(r1) 1140
+            1142:    6(float) Load 13(inF0)
+            1143:    8(fvec2) Load 15(inFV0)
+            1144:    8(fvec2) VectorTimesScalar 1143 1142
+                              Store 1141(r2) 1144
+            1146:    8(fvec2) Load 15(inFV0)
+            1147:    8(fvec2) Load 16(inFV1)
+            1148:    6(float) Dot 1146 1147
+                              Store 1145(r3) 1148
+            1150:          10 Load 17(inFM0)
+            1151:    8(fvec2) Load 15(inFV0)
+            1152:    8(fvec2) MatrixTimesVector 1150 1151
+                              Store 1149(r4) 1152
+            1154:    8(fvec2) Load 15(inFV0)
+            1155:          10 Load 17(inFM0)
+            1156:    8(fvec2) VectorTimesMatrix 1154 1155
+                              Store 1153(r5) 1156
+            1158:          10 Load 17(inFM0)
+            1159:    6(float) Load 13(inF0)
+            1160:          10 MatrixTimesScalar 1158 1159
+                              Store 1157(r6) 1160
+            1162:    6(float) Load 13(inF0)
+            1163:          10 Load 17(inFM0)
+            1164:          10 MatrixTimesScalar 1163 1162
+                              Store 1161(r7) 1164
+            1166:          10 Load 17(inFM0)
+            1167:          10 Load 18(inFM1)
+            1168:          10 MatrixTimesMatrix 1166 1167
+                              Store 1165(r8) 1168
                               Return
                               FunctionEnd
 32(TestGenMul(f1;f1;vf3;vf3;mf33;mf33;):           2 Function None 25
@@ -3186,51 +3304,51 @@ gl_FragCoord origin is upper left
        30(inFM0):     24(ptr) FunctionParameter
        31(inFM1):     24(ptr) FunctionParameter
               33:             Label
-        1137(r0):      7(ptr) Variable Function
-        1141(r1):     22(ptr) Variable Function
-        1145(r2):     22(ptr) Variable Function
-        1149(r3):      7(ptr) Variable Function
-        1153(r4):     22(ptr) Variable Function
-        1157(r5):     22(ptr) Variable Function
-        1161(r6):     24(ptr) Variable Function
-        1165(r7):     24(ptr) Variable Function
-        1169(r8):     24(ptr) Variable Function
-            1138:    6(float) Load 26(inF0)
-            1139:    6(float) Load 27(inF1)
-            1140:    6(float) FMul 1138 1139
-                              Store 1137(r0) 1140
-            1142:   21(fvec3) Load 28(inFV0)
-            1143:    6(float) Load 26(inF0)
-            1144:   21(fvec3) VectorTimesScalar 1142 1143
-                              Store 1141(r1) 1144
-            1146:    6(float) Load 26(inF0)
-            1147:   21(fvec3) Load 28(inFV0)
-            1148:   21(fvec3) VectorTimesScalar 1147 1146
-                              Store 1145(r2) 1148
-            1150:   21(fvec3) Load 28(inFV0)
-            1151:   21(fvec3) Load 29(inFV1)
-            1152:    6(float) Dot 1150 1151
-                              Store 1149(r3) 1152
-            1154:          23 Load 30(inFM0)
-            1155:   21(fvec3) Load 28(inFV0)
-            1156:   21(fvec3) MatrixTimesVector 1154 1155
-                              Store 1153(r4) 1156
-            1158:   21(fvec3) Load 28(inFV0)
-            1159:          23 Load 30(inFM0)
-            1160:   21(fvec3) VectorTimesMatrix 1158 1159
-                              Store 1157(r5) 1160
-            1162:          23 Load 30(inFM0)
-            1163:    6(float) Load 26(inF0)
-            1164:          23 MatrixTimesScalar 1162 1163
-                              Store 1161(r6) 1164
-            1166:    6(float) Load 26(inF0)
-            1167:          23 Load 30(inFM0)
-            1168:          23 MatrixTimesScalar 1167 1166
-                              Store 1165(r7) 1168
-            1170:          23 Load 30(inFM0)
-            1171:          23 Load 31(inFM1)
-            1172:          23 MatrixTimesMatrix 1170 1171
-                              Store 1169(r8) 1172
+        1169(r0):      7(ptr) Variable Function
+        1173(r1):     22(ptr) Variable Function
+        1177(r2):     22(ptr) Variable Function
+        1181(r3):      7(ptr) Variable Function
+        1185(r4):     22(ptr) Variable Function
+        1189(r5):     22(ptr) Variable Function
+        1193(r6):     24(ptr) Variable Function
+        1197(r7):     24(ptr) Variable Function
+        1201(r8):     24(ptr) Variable Function
+            1170:    6(float) Load 26(inF0)
+            1171:    6(float) Load 27(inF1)
+            1172:    6(float) FMul 1170 1171
+                              Store 1169(r0) 1172
+            1174:   21(fvec3) Load 28(inFV0)
+            1175:    6(float) Load 26(inF0)
+            1176:   21(fvec3) VectorTimesScalar 1174 1175
+                              Store 1173(r1) 1176
+            1178:    6(float) Load 26(inF0)
+            1179:   21(fvec3) Load 28(inFV0)
+            1180:   21(fvec3) VectorTimesScalar 1179 1178
+                              Store 1177(r2) 1180
+            1182:   21(fvec3) Load 28(inFV0)
+            1183:   21(fvec3) Load 29(inFV1)
+            1184:    6(float) Dot 1182 1183
+                              Store 1181(r3) 1184
+            1186:          23 Load 30(inFM0)
+            1187:   21(fvec3) Load 28(inFV0)
+            1188:   21(fvec3) MatrixTimesVector 1186 1187
+                              Store 1185(r4) 1188
+            1190:   21(fvec3) Load 28(inFV0)
+            1191:          23 Load 30(inFM0)
+            1192:   21(fvec3) VectorTimesMatrix 1190 1191
+                              Store 1189(r5) 1192
+            1194:          23 Load 30(inFM0)
+            1195:    6(float) Load 26(inF0)
+            1196:          23 MatrixTimesScalar 1194 1195
+                              Store 1193(r6) 1196
+            1198:    6(float) Load 26(inF0)
+            1199:          23 Load 30(inFM0)
+            1200:          23 MatrixTimesScalar 1199 1198
+                              Store 1197(r7) 1200
+            1202:          23 Load 30(inFM0)
+            1203:          23 Load 31(inFM1)
+            1204:          23 MatrixTimesMatrix 1202 1203
+                              Store 1201(r8) 1204
                               Return
                               FunctionEnd
 45(TestGenMul(f1;f1;vf4;vf4;mf44;mf44;):           2 Function None 38
@@ -3241,50 +3359,62 @@ gl_FragCoord origin is upper left
        43(inFM0):     37(ptr) FunctionParameter
        44(inFM1):     37(ptr) FunctionParameter
               46:             Label
-        1173(r0):      7(ptr) Variable Function
-        1177(r1):     35(ptr) Variable Function
-        1181(r2):     35(ptr) Variable Function
-        1185(r3):      7(ptr) Variable Function
-        1189(r4):     35(ptr) Variable Function
-        1193(r5):     35(ptr) Variable Function
-        1197(r6):     37(ptr) Variable Function
-        1201(r7):     37(ptr) Variable Function
-        1205(r8):     37(ptr) Variable Function
-            1174:    6(float) Load 39(inF0)
-            1175:    6(float) Load 40(inF1)
-            1176:    6(float) FMul 1174 1175
-                              Store 1173(r0) 1176
-            1178:   34(fvec4) Load 41(inFV0)
-            1179:    6(float) Load 39(inF0)
-            1180:   34(fvec4) VectorTimesScalar 1178 1179
-                              Store 1177(r1) 1180
-            1182:    6(float) Load 39(inF0)
-            1183:   34(fvec4) Load 41(inFV0)
-            1184:   34(fvec4) VectorTimesScalar 1183 1182
-                              Store 1181(r2) 1184
-            1186:   34(fvec4) Load 41(inFV0)
-            1187:   34(fvec4) Load 42(inFV1)
-            1188:    6(float) Dot 1186 1187
-                              Store 1185(r3) 1188
-            1190:          36 Load 43(inFM0)
-            1191:   34(fvec4) Load 41(inFV0)
-            1192:   34(fvec4) MatrixTimesVector 1190 1191
-                              Store 1189(r4) 1192
-            1194:   34(fvec4) Load 41(inFV0)
-            1195:          36 Load 43(inFM0)
-            1196:   34(fvec4) VectorTimesMatrix 1194 1195
-                              Store 1193(r5) 1196
-            1198:          36 Load 43(inFM0)
-            1199:    6(float) Load 39(inF0)
-            1200:          36 MatrixTimesScalar 1198 1199
-                              Store 1197(r6) 1200
-            1202:    6(float) Load 39(inF0)
-            1203:          36 Load 43(inFM0)
-            1204:          36 MatrixTimesScalar 1203 1202
-                              Store 1201(r7) 1204
-            1206:          36 Load 43(inFM0)
-            1207:          36 Load 44(inFM1)
-            1208:          36 MatrixTimesMatrix 1206 1207
-                              Store 1205(r8) 1208
+        1205(r0):      7(ptr) Variable Function
+        1209(r1):     35(ptr) Variable Function
+        1213(r2):     35(ptr) Variable Function
+        1217(r3):      7(ptr) Variable Function
+        1221(r4):     35(ptr) Variable Function
+        1225(r5):     35(ptr) Variable Function
+        1229(r6):     37(ptr) Variable Function
+        1233(r7):     37(ptr) Variable Function
+        1237(r8):     37(ptr) Variable Function
+     1241(gs_ua):     65(ptr) Variable Function
+     1242(gs_ub):     65(ptr) Variable Function
+     1243(gs_uc):     65(ptr) Variable Function
+    1244(gs_ua2):    210(ptr) Variable Function
+    1245(gs_ub2):    210(ptr) Variable Function
+    1246(gs_uc2):    210(ptr) Variable Function
+    1247(gs_ua3):    380(ptr) Variable Function
+    1248(gs_ub3):    380(ptr) Variable Function
+    1249(gs_uc3):    380(ptr) Variable Function
+    1250(gs_ua4):    552(ptr) Variable Function
+    1251(gs_ub4):    552(ptr) Variable Function
+    1252(gs_uc4):    552(ptr) Variable Function
+            1206:    6(float) Load 39(inF0)
+            1207:    6(float) Load 40(inF1)
+            1208:    6(float) FMul 1206 1207
+                              Store 1205(r0) 1208
+            1210:   34(fvec4) Load 41(inFV0)
+            1211:    6(float) Load 39(inF0)
+            1212:   34(fvec4) VectorTimesScalar 1210 1211
+                              Store 1209(r1) 1212
+            1214:    6(float) Load 39(inF0)
+            1215:   34(fvec4) Load 41(inFV0)
+            1216:   34(fvec4) VectorTimesScalar 1215 1214
+                              Store 1213(r2) 1216
+            1218:   34(fvec4) Load 41(inFV0)
+            1219:   34(fvec4) Load 42(inFV1)
+            1220:    6(float) Dot 1218 1219
+                              Store 1217(r3) 1220
+            1222:          36 Load 43(inFM0)
+            1223:   34(fvec4) Load 41(inFV0)
+            1224:   34(fvec4) MatrixTimesVector 1222 1223
+                              Store 1221(r4) 1224
+            1226:   34(fvec4) Load 41(inFV0)
+            1227:          36 Load 43(inFM0)
+            1228:   34(fvec4) VectorTimesMatrix 1226 1227
+                              Store 1225(r5) 1228
+            1230:          36 Load 43(inFM0)
+            1231:    6(float) Load 39(inF0)
+            1232:          36 MatrixTimesScalar 1230 1231
+                              Store 1229(r6) 1232
+            1234:    6(float) Load 39(inF0)
+            1235:          36 Load 43(inFM0)
+            1236:          36 MatrixTimesScalar 1235 1234
+                              Store 1233(r7) 1236
+            1238:          36 Load 43(inFM0)
+            1239:          36 Load 44(inFM1)
+            1240:          36 MatrixTimesMatrix 1238 1239
+                              Store 1237(r8) 1240
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.negative.comp.out b/Test/baseResults/hlsl.intrinsics.negative.comp.out
new file mode 100644 (file)
index 0000000..0bb1dc3
--- /dev/null
@@ -0,0 +1,886 @@
+hlsl.intrinsics.negative.comp
+ERROR: 0:7: 'asdouble' : no matching overloaded function found 
+ERROR: 0:8: 'CheckAccessFullyMapped' : no matching overloaded function found 
+ERROR: 0:9: 'clip' : no matching overloaded function found 
+ERROR: 0:10: 'countbits' : no matching overloaded function found 
+ERROR: 0:11: 'cross' : no matching overloaded function found 
+ERROR: 0:12: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:13: 'ddx' : no matching overloaded function found 
+ERROR: 0:14: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:15: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:16: 'ddy' : no matching overloaded function found 
+ERROR: 0:17: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:18: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:19: 'determinant' : no matching overloaded function found 
+ERROR: 0:20: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:21: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:22: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:23: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:24: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:25: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:26: 'fma' : no matching overloaded function found 
+ERROR: 0:27: 'fwidth' : no matching overloaded function found 
+ERROR: 0:28: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:29: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:30: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:31: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:32: 'InterlockedCompareExchange' : no matching overloaded function found 
+ERROR: 0:33: 'InterlockedExchange' : no matching overloaded function found 
+ERROR: 0:34: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:35: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:36: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:37: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:38: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:39: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:40: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:41: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:42: 'length' : no matching overloaded function found 
+ERROR: 0:43: 'msad4' : no matching overloaded function found 
+ERROR: 0:44: 'normalize' : no matching overloaded function found 
+ERROR: 0:45: 'reflect' : no matching overloaded function found 
+ERROR: 0:46: 'refract' : no matching overloaded function found 
+ERROR: 0:47: 'refract' : no matching overloaded function found 
+ERROR: 0:48: 'reversebits' : no matching overloaded function found 
+ERROR: 0:49: 'transpose' : no matching overloaded function found 
+ERROR: 0:60: 'GetRenderTargetSamplePosition' : no matching overloaded function found 
+ERROR: 0:69: 'asdouble' : no matching overloaded function found 
+ERROR: 0:70: 'CheckAccessFullyMapped' : no matching overloaded function found 
+ERROR: 0:71: 'countbits' : no matching overloaded function found 
+ERROR: 0:72: 'cross' : no matching overloaded function found 
+ERROR: 0:73: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:74: 'ddx' : no matching overloaded function found 
+ERROR: 0:75: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:76: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:77: 'ddy' : no matching overloaded function found 
+ERROR: 0:78: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:79: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:80: 'determinant' : no matching overloaded function found 
+ERROR: 0:81: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:82: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:83: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:84: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:85: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:86: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:87: 'fma' : no matching overloaded function found 
+ERROR: 0:88: 'fwidth' : no matching overloaded function found 
+ERROR: 0:89: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:90: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:91: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:92: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:93: 'InterlockedCompareExchange' : no matching overloaded function found 
+ERROR: 0:94: 'InterlockedExchange' : no matching overloaded function found 
+ERROR: 0:95: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:96: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:97: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:98: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:99: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:100: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:101: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:102: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:103: 'noise' : no matching overloaded function found 
+ERROR: 0:104: 'reversebits' : no matching overloaded function found 
+ERROR: 0:105: 'transpose' : no matching overloaded function found 
+ERROR: 0:116: 'CheckAccessFullyMapped' : no matching overloaded function found 
+ERROR: 0:117: 'countbits' : no matching overloaded function found 
+ERROR: 0:118: 'ddx' : no matching overloaded function found 
+ERROR: 0:119: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:120: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:121: 'ddy' : no matching overloaded function found 
+ERROR: 0:122: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:123: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:124: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:125: 'determinant' : no matching overloaded function found 
+ERROR: 0:126: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:127: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:128: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:129: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:130: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:131: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:132: 'fma' : no matching overloaded function found 
+ERROR: 0:133: 'fwidth' : no matching overloaded function found 
+ERROR: 0:134: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:135: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:136: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:137: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:138: 'InterlockedCompareExchange' : no matching overloaded function found 
+ERROR: 0:139: 'InterlockedExchange' : no matching overloaded function found 
+ERROR: 0:140: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:141: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:142: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:143: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:144: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:145: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:146: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:147: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:148: 'noise' : no matching overloaded function found 
+ERROR: 0:149: 'reversebits' : no matching overloaded function found 
+ERROR: 0:150: 'transpose' : no matching overloaded function found 
+ERROR: 0:161: 'CheckAccessFullyMapped' : no matching overloaded function found 
+ERROR: 0:162: 'countbits' : no matching overloaded function found 
+ERROR: 0:163: 'cross' : no matching overloaded function found 
+ERROR: 0:164: 'determinant' : no matching overloaded function found 
+ERROR: 0:165: 'ddx' : no matching overloaded function found 
+ERROR: 0:166: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:167: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:168: 'ddy' : no matching overloaded function found 
+ERROR: 0:169: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:170: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:171: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:172: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:173: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:174: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:175: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:176: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:177: 'fma' : no matching overloaded function found 
+ERROR: 0:178: 'fwidth' : no matching overloaded function found 
+ERROR: 0:179: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:180: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:181: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:182: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:183: 'InterlockedCompareExchange' : no matching overloaded function found 
+ERROR: 0:184: 'InterlockedExchange' : no matching overloaded function found 
+ERROR: 0:185: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:186: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:187: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:188: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:189: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:190: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:191: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:192: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:193: 'noise' : no matching overloaded function found 
+ERROR: 0:194: 'reversebits' : no matching overloaded function found 
+ERROR: 0:195: 'transpose' : no matching overloaded function found 
+ERROR: 151 compilation errors.  No code generated.
+
+
+Shader version: 450
+local_size = (1, 1, 1)
+ERROR: node is still EOpNull!
+0:56  Function Definition: ComputeShaderFunction(f1;f1;f1;i1; (temp float)
+0:2    Function Parameters: 
+0:2      'inF0' (temp float)
+0:2      'inF1' (temp float)
+0:2      'inF2' (temp float)
+0:2      'inI0' (temp int)
+0:?     Sequence
+0:7      Constant:
+0:7        0.000000
+0:8      Constant:
+0:8        0.000000
+0:9      Constant:
+0:9        0.000000
+0:10      Constant:
+0:10        0.000000
+0:11      Constant:
+0:11        0.000000
+0:12      Constant:
+0:12        0.000000
+0:13      Constant:
+0:13        0.000000
+0:14      Constant:
+0:14        0.000000
+0:15      Constant:
+0:15        0.000000
+0:16      Constant:
+0:16        0.000000
+0:17      Constant:
+0:17        0.000000
+0:18      Constant:
+0:18        0.000000
+0:19      Constant:
+0:19        0.000000
+0:20      Constant:
+0:20        0.000000
+0:21      Constant:
+0:21        0.000000
+0:22      Constant:
+0:22        0.000000
+0:23      Constant:
+0:23        0.000000
+0:24      Constant:
+0:24        0.000000
+0:25      Constant:
+0:25        0.000000
+0:26      Constant:
+0:26        0.000000
+0:27      Constant:
+0:27        0.000000
+0:28      Constant:
+0:28        0.000000
+0:29      Constant:
+0:29        0.000000
+0:30      Constant:
+0:30        0.000000
+0:31      Constant:
+0:31        0.000000
+0:32      Constant:
+0:32        0.000000
+0:33      Constant:
+0:33        0.000000
+0:34      Constant:
+0:34        0.000000
+0:35      Constant:
+0:35        0.000000
+0:36      Constant:
+0:36        0.000000
+0:37      Constant:
+0:37        0.000000
+0:38      Constant:
+0:38        0.000000
+0:39      Constant:
+0:39        0.000000
+0:40      Constant:
+0:40        0.000000
+0:41      Constant:
+0:41        0.000000
+0:42      Constant:
+0:42        0.000000
+0:43      Constant:
+0:43        0.000000
+0:44      Constant:
+0:44        0.000000
+0:45      Constant:
+0:45        0.000000
+0:46      Constant:
+0:46        0.000000
+0:47      Constant:
+0:47        0.000000
+0:48      Constant:
+0:48        0.000000
+0:49      Constant:
+0:49        0.000000
+0:53      Branch: Return with expression
+0:53        Constant:
+0:53          0.000000
+0:65  Function Definition: ComputeShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
+0:57    Function Parameters: 
+0:57      'inF0' (temp 1-component vector of float)
+0:57      'inF1' (temp 1-component vector of float)
+0:57      'inF2' (temp 1-component vector of float)
+0:57      'inI0' (temp 1-component vector of int)
+0:?     Sequence
+0:60      Constant:
+0:60        0.000000
+0:62      Branch: Return with expression
+0:62        Constant:
+0:62          0.000000
+0:112  Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
+0:66    Function Parameters: 
+0:66      'inF0' (temp 2-component vector of float)
+0:66      'inF1' (temp 2-component vector of float)
+0:66      'inF2' (temp 2-component vector of float)
+0:66      'inI0' (temp 2-component vector of int)
+0:?     Sequence
+0:69      Constant:
+0:69        0.000000
+0:70      Constant:
+0:70        0.000000
+0:71      Constant:
+0:71        0.000000
+0:72      Constant:
+0:72        0.000000
+0:73      Constant:
+0:73        0.000000
+0:74      Constant:
+0:74        0.000000
+0:75      Constant:
+0:75        0.000000
+0:76      Constant:
+0:76        0.000000
+0:77      Constant:
+0:77        0.000000
+0:78      Constant:
+0:78        0.000000
+0:79      Constant:
+0:79        0.000000
+0:80      Constant:
+0:80        0.000000
+0:81      Constant:
+0:81        0.000000
+0:82      Constant:
+0:82        0.000000
+0:83      Constant:
+0:83        0.000000
+0:84      Constant:
+0:84        0.000000
+0:85      Constant:
+0:85        0.000000
+0:86      Constant:
+0:86        0.000000
+0:87      Constant:
+0:87        0.000000
+0:88      Constant:
+0:88        0.000000
+0:89      Constant:
+0:89        0.000000
+0:90      Constant:
+0:90        0.000000
+0:91      Constant:
+0:91        0.000000
+0:92      Constant:
+0:92        0.000000
+0:93      Constant:
+0:93        0.000000
+0:94      Constant:
+0:94        0.000000
+0:95      Constant:
+0:95        0.000000
+0:96      Constant:
+0:96        0.000000
+0:97      Constant:
+0:97        0.000000
+0:98      Constant:
+0:98        0.000000
+0:99      Constant:
+0:99        0.000000
+0:100      Constant:
+0:100        0.000000
+0:101      Constant:
+0:101        0.000000
+0:102      Constant:
+0:102        0.000000
+0:103      Constant:
+0:103        0.000000
+0:104      Constant:
+0:104        0.000000
+0:105      Constant:
+0:105        0.000000
+0:109      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:157  Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
+0:113    Function Parameters: 
+0:113      'inF0' (temp 3-component vector of float)
+0:113      'inF1' (temp 3-component vector of float)
+0:113      'inF2' (temp 3-component vector of float)
+0:113      'inI0' (temp 3-component vector of int)
+0:?     Sequence
+0:116      Constant:
+0:116        0.000000
+0:117      Constant:
+0:117        0.000000
+0:118      Constant:
+0:118        0.000000
+0:119      Constant:
+0:119        0.000000
+0:120      Constant:
+0:120        0.000000
+0:121      Constant:
+0:121        0.000000
+0:122      Constant:
+0:122        0.000000
+0:123      Constant:
+0:123        0.000000
+0:124      Constant:
+0:124        0.000000
+0:125      Constant:
+0:125        0.000000
+0:126      Constant:
+0:126        0.000000
+0:127      Constant:
+0:127        0.000000
+0:128      Constant:
+0:128        0.000000
+0:129      Constant:
+0:129        0.000000
+0:130      Constant:
+0:130        0.000000
+0:131      Constant:
+0:131        0.000000
+0:132      Constant:
+0:132        0.000000
+0:133      Constant:
+0:133        0.000000
+0:134      Constant:
+0:134        0.000000
+0:135      Constant:
+0:135        0.000000
+0:136      Constant:
+0:136        0.000000
+0:137      Constant:
+0:137        0.000000
+0:138      Constant:
+0:138        0.000000
+0:139      Constant:
+0:139        0.000000
+0:140      Constant:
+0:140        0.000000
+0:141      Constant:
+0:141        0.000000
+0:142      Constant:
+0:142        0.000000
+0:143      Constant:
+0:143        0.000000
+0:144      Constant:
+0:144        0.000000
+0:145      Constant:
+0:145        0.000000
+0:146      Constant:
+0:146        0.000000
+0:147      Constant:
+0:147        0.000000
+0:148      Constant:
+0:148        0.000000
+0:149      Constant:
+0:149        0.000000
+0:150      Constant:
+0:150        0.000000
+0:154      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:202  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
+0:158    Function Parameters: 
+0:158      'inF0' (temp 4-component vector of float)
+0:158      'inF1' (temp 4-component vector of float)
+0:158      'inF2' (temp 4-component vector of float)
+0:158      'inI0' (temp 4-component vector of int)
+0:?     Sequence
+0:161      Constant:
+0:161        0.000000
+0:162      Constant:
+0:162        0.000000
+0:163      Constant:
+0:163        0.000000
+0:164      Constant:
+0:164        0.000000
+0:165      Constant:
+0:165        0.000000
+0:166      Constant:
+0:166        0.000000
+0:167      Constant:
+0:167        0.000000
+0:168      Constant:
+0:168        0.000000
+0:169      Constant:
+0:169        0.000000
+0:170      Constant:
+0:170        0.000000
+0:171      Constant:
+0:171        0.000000
+0:172      Constant:
+0:172        0.000000
+0:173      Constant:
+0:173        0.000000
+0:174      Constant:
+0:174        0.000000
+0:175      Constant:
+0:175        0.000000
+0:176      Constant:
+0:176        0.000000
+0:177      Constant:
+0:177        0.000000
+0:178      Constant:
+0:178        0.000000
+0:179      Constant:
+0:179        0.000000
+0:180      Constant:
+0:180        0.000000
+0:181      Constant:
+0:181        0.000000
+0:182      Constant:
+0:182        0.000000
+0:183      Constant:
+0:183        0.000000
+0:184      Constant:
+0:184        0.000000
+0:185      Constant:
+0:185        0.000000
+0:186      Constant:
+0:186        0.000000
+0:187      Constant:
+0:187        0.000000
+0:188      Constant:
+0:188        0.000000
+0:189      Constant:
+0:189        0.000000
+0:190      Constant:
+0:190        0.000000
+0:191      Constant:
+0:191        0.000000
+0:192      Constant:
+0:192        0.000000
+0:193      Constant:
+0:193        0.000000
+0:194      Constant:
+0:194        0.000000
+0:195      Constant:
+0:195        0.000000
+0:199      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:?           4.000000
+0:?   Linker Objects
+
+
+Linked compute stage:
+
+
+Shader version: 450
+local_size = (1, 1, 1)
+ERROR: node is still EOpNull!
+0:56  Function Definition: ComputeShaderFunction(f1;f1;f1;i1; (temp float)
+0:2    Function Parameters: 
+0:2      'inF0' (temp float)
+0:2      'inF1' (temp float)
+0:2      'inF2' (temp float)
+0:2      'inI0' (temp int)
+0:?     Sequence
+0:7      Constant:
+0:7        0.000000
+0:8      Constant:
+0:8        0.000000
+0:9      Constant:
+0:9        0.000000
+0:10      Constant:
+0:10        0.000000
+0:11      Constant:
+0:11        0.000000
+0:12      Constant:
+0:12        0.000000
+0:13      Constant:
+0:13        0.000000
+0:14      Constant:
+0:14        0.000000
+0:15      Constant:
+0:15        0.000000
+0:16      Constant:
+0:16        0.000000
+0:17      Constant:
+0:17        0.000000
+0:18      Constant:
+0:18        0.000000
+0:19      Constant:
+0:19        0.000000
+0:20      Constant:
+0:20        0.000000
+0:21      Constant:
+0:21        0.000000
+0:22      Constant:
+0:22        0.000000
+0:23      Constant:
+0:23        0.000000
+0:24      Constant:
+0:24        0.000000
+0:25      Constant:
+0:25        0.000000
+0:26      Constant:
+0:26        0.000000
+0:27      Constant:
+0:27        0.000000
+0:28      Constant:
+0:28        0.000000
+0:29      Constant:
+0:29        0.000000
+0:30      Constant:
+0:30        0.000000
+0:31      Constant:
+0:31        0.000000
+0:32      Constant:
+0:32        0.000000
+0:33      Constant:
+0:33        0.000000
+0:34      Constant:
+0:34        0.000000
+0:35      Constant:
+0:35        0.000000
+0:36      Constant:
+0:36        0.000000
+0:37      Constant:
+0:37        0.000000
+0:38      Constant:
+0:38        0.000000
+0:39      Constant:
+0:39        0.000000
+0:40      Constant:
+0:40        0.000000
+0:41      Constant:
+0:41        0.000000
+0:42      Constant:
+0:42        0.000000
+0:43      Constant:
+0:43        0.000000
+0:44      Constant:
+0:44        0.000000
+0:45      Constant:
+0:45        0.000000
+0:46      Constant:
+0:46        0.000000
+0:47      Constant:
+0:47        0.000000
+0:48      Constant:
+0:48        0.000000
+0:49      Constant:
+0:49        0.000000
+0:53      Branch: Return with expression
+0:53        Constant:
+0:53          0.000000
+0:65  Function Definition: ComputeShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
+0:57    Function Parameters: 
+0:57      'inF0' (temp 1-component vector of float)
+0:57      'inF1' (temp 1-component vector of float)
+0:57      'inF2' (temp 1-component vector of float)
+0:57      'inI0' (temp 1-component vector of int)
+0:?     Sequence
+0:60      Constant:
+0:60        0.000000
+0:62      Branch: Return with expression
+0:62        Constant:
+0:62          0.000000
+0:112  Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
+0:66    Function Parameters: 
+0:66      'inF0' (temp 2-component vector of float)
+0:66      'inF1' (temp 2-component vector of float)
+0:66      'inF2' (temp 2-component vector of float)
+0:66      'inI0' (temp 2-component vector of int)
+0:?     Sequence
+0:69      Constant:
+0:69        0.000000
+0:70      Constant:
+0:70        0.000000
+0:71      Constant:
+0:71        0.000000
+0:72      Constant:
+0:72        0.000000
+0:73      Constant:
+0:73        0.000000
+0:74      Constant:
+0:74        0.000000
+0:75      Constant:
+0:75        0.000000
+0:76      Constant:
+0:76        0.000000
+0:77      Constant:
+0:77        0.000000
+0:78      Constant:
+0:78        0.000000
+0:79      Constant:
+0:79        0.000000
+0:80      Constant:
+0:80        0.000000
+0:81      Constant:
+0:81        0.000000
+0:82      Constant:
+0:82        0.000000
+0:83      Constant:
+0:83        0.000000
+0:84      Constant:
+0:84        0.000000
+0:85      Constant:
+0:85        0.000000
+0:86      Constant:
+0:86        0.000000
+0:87      Constant:
+0:87        0.000000
+0:88      Constant:
+0:88        0.000000
+0:89      Constant:
+0:89        0.000000
+0:90      Constant:
+0:90        0.000000
+0:91      Constant:
+0:91        0.000000
+0:92      Constant:
+0:92        0.000000
+0:93      Constant:
+0:93        0.000000
+0:94      Constant:
+0:94        0.000000
+0:95      Constant:
+0:95        0.000000
+0:96      Constant:
+0:96        0.000000
+0:97      Constant:
+0:97        0.000000
+0:98      Constant:
+0:98        0.000000
+0:99      Constant:
+0:99        0.000000
+0:100      Constant:
+0:100        0.000000
+0:101      Constant:
+0:101        0.000000
+0:102      Constant:
+0:102        0.000000
+0:103      Constant:
+0:103        0.000000
+0:104      Constant:
+0:104        0.000000
+0:105      Constant:
+0:105        0.000000
+0:109      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:157  Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
+0:113    Function Parameters: 
+0:113      'inF0' (temp 3-component vector of float)
+0:113      'inF1' (temp 3-component vector of float)
+0:113      'inF2' (temp 3-component vector of float)
+0:113      'inI0' (temp 3-component vector of int)
+0:?     Sequence
+0:116      Constant:
+0:116        0.000000
+0:117      Constant:
+0:117        0.000000
+0:118      Constant:
+0:118        0.000000
+0:119      Constant:
+0:119        0.000000
+0:120      Constant:
+0:120        0.000000
+0:121      Constant:
+0:121        0.000000
+0:122      Constant:
+0:122        0.000000
+0:123      Constant:
+0:123        0.000000
+0:124      Constant:
+0:124        0.000000
+0:125      Constant:
+0:125        0.000000
+0:126      Constant:
+0:126        0.000000
+0:127      Constant:
+0:127        0.000000
+0:128      Constant:
+0:128        0.000000
+0:129      Constant:
+0:129        0.000000
+0:130      Constant:
+0:130        0.000000
+0:131      Constant:
+0:131        0.000000
+0:132      Constant:
+0:132        0.000000
+0:133      Constant:
+0:133        0.000000
+0:134      Constant:
+0:134        0.000000
+0:135      Constant:
+0:135        0.000000
+0:136      Constant:
+0:136        0.000000
+0:137      Constant:
+0:137        0.000000
+0:138      Constant:
+0:138        0.000000
+0:139      Constant:
+0:139        0.000000
+0:140      Constant:
+0:140        0.000000
+0:141      Constant:
+0:141        0.000000
+0:142      Constant:
+0:142        0.000000
+0:143      Constant:
+0:143        0.000000
+0:144      Constant:
+0:144        0.000000
+0:145      Constant:
+0:145        0.000000
+0:146      Constant:
+0:146        0.000000
+0:147      Constant:
+0:147        0.000000
+0:148      Constant:
+0:148        0.000000
+0:149      Constant:
+0:149        0.000000
+0:150      Constant:
+0:150        0.000000
+0:154      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:202  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
+0:158    Function Parameters: 
+0:158      'inF0' (temp 4-component vector of float)
+0:158      'inF1' (temp 4-component vector of float)
+0:158      'inF2' (temp 4-component vector of float)
+0:158      'inI0' (temp 4-component vector of int)
+0:?     Sequence
+0:161      Constant:
+0:161        0.000000
+0:162      Constant:
+0:162        0.000000
+0:163      Constant:
+0:163        0.000000
+0:164      Constant:
+0:164        0.000000
+0:165      Constant:
+0:165        0.000000
+0:166      Constant:
+0:166        0.000000
+0:167      Constant:
+0:167        0.000000
+0:168      Constant:
+0:168        0.000000
+0:169      Constant:
+0:169        0.000000
+0:170      Constant:
+0:170        0.000000
+0:171      Constant:
+0:171        0.000000
+0:172      Constant:
+0:172        0.000000
+0:173      Constant:
+0:173        0.000000
+0:174      Constant:
+0:174        0.000000
+0:175      Constant:
+0:175        0.000000
+0:176      Constant:
+0:176        0.000000
+0:177      Constant:
+0:177        0.000000
+0:178      Constant:
+0:178        0.000000
+0:179      Constant:
+0:179        0.000000
+0:180      Constant:
+0:180        0.000000
+0:181      Constant:
+0:181        0.000000
+0:182      Constant:
+0:182        0.000000
+0:183      Constant:
+0:183        0.000000
+0:184      Constant:
+0:184        0.000000
+0:185      Constant:
+0:185        0.000000
+0:186      Constant:
+0:186        0.000000
+0:187      Constant:
+0:187        0.000000
+0:188      Constant:
+0:188        0.000000
+0:189      Constant:
+0:189        0.000000
+0:190      Constant:
+0:190        0.000000
+0:191      Constant:
+0:191        0.000000
+0:192      Constant:
+0:192        0.000000
+0:193      Constant:
+0:193        0.000000
+0:194      Constant:
+0:194        0.000000
+0:195      Constant:
+0:195        0.000000
+0:199      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:?           4.000000
+0:?   Linker Objects
+
+SPIR-V is not generated for failed compile or link
index de711e9..2bbec5a 100644 (file)
 hlsl.intrinsics.negative.vert
-ERROR: 0:5: 'asdouble' : no matching overloaded function found 
-ERROR: 0:6: 'CheckAccessFullyMapped' : no matching overloaded function found 
-ERROR: 0:7: 'CheckAccessFullyMapped' : no matching overloaded function found 
-ERROR: 0:8: 'clip' : no matching overloaded function found 
-ERROR: 0:9: 'countbits' : no matching overloaded function found 
-ERROR: 0:10: 'cross' : no matching overloaded function found 
-ERROR: 0:11: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:14: 'ddx' : no matching overloaded function found 
-ERROR: 0:15: 'ddx_coarse' : no matching overloaded function found 
-ERROR: 0:16: 'ddx_fine' : no matching overloaded function found 
-ERROR: 0:17: 'ddy' : no matching overloaded function found 
-ERROR: 0:18: 'ddy_coarse' : no matching overloaded function found 
-ERROR: 0:19: 'ddy_fine' : no matching overloaded function found 
-ERROR: 0:20: 'determinant' : no matching overloaded function found 
-ERROR: 0:21: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
-ERROR: 0:22: 'EvaluateAttributeAtSample' : no matching overloaded function found 
-ERROR: 0:23: 'EvaluateAttributeSnapped' : no matching overloaded function found 
-ERROR: 0:24: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:25: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:26: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:27: 'fma' : no matching overloaded function found 
-ERROR: 0:35: 'length' : no matching overloaded function found 
-ERROR: 0:36: 'msad4' : no matching overloaded function found 
-ERROR: 0:37: 'normalize' : no matching overloaded function found 
-ERROR: 0:38: 'reflect' : no matching overloaded function found 
-ERROR: 0:39: 'refract' : no matching overloaded function found 
-ERROR: 0:40: 'refract' : no matching overloaded function found 
-ERROR: 0:41: 'reversebits' : no matching overloaded function found 
-ERROR: 0:42: 'transpose' : no matching overloaded function found 
-ERROR: 0:53: 'GetRenderTargetSamplePosition' : no matching overloaded function found 
-ERROR: 0:60: 'asdouble' : no matching overloaded function found 
-ERROR: 0:61: 'CheckAccessFullyMapped' : no matching overloaded function found 
-ERROR: 0:62: 'countbits' : no matching overloaded function found 
-ERROR: 0:63: 'cross' : no matching overloaded function found 
-ERROR: 0:64: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:65: 'ddx' : no matching overloaded function found 
-ERROR: 0:66: 'ddx_coarse' : no matching overloaded function found 
-ERROR: 0:67: 'ddx_fine' : no matching overloaded function found 
-ERROR: 0:68: 'ddy' : no matching overloaded function found 
-ERROR: 0:69: 'ddy_coarse' : no matching overloaded function found 
-ERROR: 0:70: 'ddy_fine' : no matching overloaded function found 
-ERROR: 0:71: 'determinant' : no matching overloaded function found 
-ERROR: 0:72: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
-ERROR: 0:73: 'EvaluateAttributeAtSample' : no matching overloaded function found 
-ERROR: 0:74: 'EvaluateAttributeSnapped' : no matching overloaded function found 
-ERROR: 0:75: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:76: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:77: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:78: 'fma' : no matching overloaded function found 
-ERROR: 0:79: 'noise' : no matching overloaded function found 
-ERROR: 0:80: 'reversebits' : no matching overloaded function found 
-ERROR: 0:81: 'transpose' : no matching overloaded function found 
-ERROR: 0:90: 'CheckAccessFullyMapped' : no matching overloaded function found 
-ERROR: 0:91: 'countbits' : no matching overloaded function found 
+ERROR: 0:20: 'asdouble' : no matching overloaded function found 
+ERROR: 0:21: 'CheckAccessFullyMapped' : no matching overloaded function found 
+ERROR: 0:22: 'CheckAccessFullyMapped' : no matching overloaded function found 
+ERROR: 0:23: 'clip' : no matching overloaded function found 
+ERROR: 0:24: 'countbits' : no matching overloaded function found 
+ERROR: 0:25: 'cross' : no matching overloaded function found 
+ERROR: 0:26: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:29: 'ddx' : no matching overloaded function found 
+ERROR: 0:30: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:31: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:32: 'ddy' : no matching overloaded function found 
+ERROR: 0:33: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:34: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:35: 'determinant' : no matching overloaded function found 
+ERROR: 0:36: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:37: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:38: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:39: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:40: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:41: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:42: 'fma' : no matching overloaded function found 
+ERROR: 0:43: 'fwidth' : no matching overloaded function found 
+ERROR: 0:44: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:45: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:46: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:47: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:48: 'InterlockedCompareExchange' : no matching overloaded function found 
+ERROR: 0:49: 'InterlockedExchange' : no matching overloaded function found 
+ERROR: 0:50: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:51: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:52: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:53: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:54: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:55: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:56: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:57: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:60: 'length' : no matching overloaded function found 
+ERROR: 0:61: 'msad4' : no matching overloaded function found 
+ERROR: 0:62: 'normalize' : no matching overloaded function found 
+ERROR: 0:63: 'reflect' : no matching overloaded function found 
+ERROR: 0:64: 'refract' : no matching overloaded function found 
+ERROR: 0:65: 'refract' : no matching overloaded function found 
+ERROR: 0:66: 'reversebits' : no matching overloaded function found 
+ERROR: 0:67: 'transpose' : no matching overloaded function found 
+ERROR: 0:78: 'GetRenderTargetSamplePosition' : no matching overloaded function found 
+ERROR: 0:87: 'asdouble' : no matching overloaded function found 
+ERROR: 0:88: 'CheckAccessFullyMapped' : no matching overloaded function found 
+ERROR: 0:89: 'countbits' : no matching overloaded function found 
+ERROR: 0:90: 'cross' : no matching overloaded function found 
+ERROR: 0:91: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
 ERROR: 0:92: 'ddx' : no matching overloaded function found 
 ERROR: 0:93: 'ddx_coarse' : no matching overloaded function found 
 ERROR: 0:94: 'ddx_fine' : no matching overloaded function found 
 ERROR: 0:95: 'ddy' : no matching overloaded function found 
 ERROR: 0:96: 'ddy_coarse' : no matching overloaded function found 
 ERROR: 0:97: 'ddy_fine' : no matching overloaded function found 
-ERROR: 0:98: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:99: 'determinant' : no matching overloaded function found 
-ERROR: 0:100: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
-ERROR: 0:101: 'EvaluateAttributeAtSample' : no matching overloaded function found 
-ERROR: 0:102: 'EvaluateAttributeSnapped' : no matching overloaded function found 
-ERROR: 0:103: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:104: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:105: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:106: 'fma' : no matching overloaded function found 
-ERROR: 0:107: 'noise' : no matching overloaded function found 
-ERROR: 0:108: 'reversebits' : no matching overloaded function found 
-ERROR: 0:109: 'transpose' : no matching overloaded function found 
-ERROR: 0:118: 'CheckAccessFullyMapped' : no matching overloaded function found 
-ERROR: 0:119: 'countbits' : no matching overloaded function found 
-ERROR: 0:120: 'cross' : no matching overloaded function found 
-ERROR: 0:121: 'determinant' : no matching overloaded function found 
-ERROR: 0:122: 'ddx' : no matching overloaded function found 
-ERROR: 0:123: 'ddx_coarse' : no matching overloaded function found 
-ERROR: 0:124: 'ddx_fine' : no matching overloaded function found 
-ERROR: 0:125: 'ddy' : no matching overloaded function found 
-ERROR: 0:126: 'ddy_coarse' : no matching overloaded function found 
-ERROR: 0:127: 'ddy_fine' : no matching overloaded function found 
-ERROR: 0:128: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
-ERROR: 0:129: 'EvaluateAttributeAtSample' : no matching overloaded function found 
-ERROR: 0:130: 'EvaluateAttributeSnapped' : no matching overloaded function found 
-ERROR: 0:131: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:132: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:133: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:134: 'fma' : no matching overloaded function found 
-ERROR: 0:135: 'noise' : no matching overloaded function found 
-ERROR: 0:136: 'reversebits' : no matching overloaded function found 
-ERROR: 0:137: 'transpose' : no matching overloaded function found 
-ERROR: 0:177: 'countbits' : no matching overloaded function found 
-ERROR: 0:177: 'cross' : no matching overloaded function found 
-ERROR: 0:177: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:177: 'ddx' : no matching overloaded function found 
-ERROR: 0:177: 'ddx_coarse' : no matching overloaded function found 
-ERROR: 0:177: 'ddx_fine' : no matching overloaded function found 
-ERROR: 0:177: 'ddy' : no matching overloaded function found 
-ERROR: 0:177: 'ddy_coarse' : no matching overloaded function found 
-ERROR: 0:177: 'ddy_fine' : no matching overloaded function found 
-ERROR: 0:177: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
-ERROR: 0:177: 'EvaluateAttributeAtSample' : no matching overloaded function found 
-ERROR: 0:177: 'EvaluateAttributeSnapped' : no matching overloaded function found 
-ERROR: 0:177: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:177: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:177: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:177: 'fma' : no matching overloaded function found 
-ERROR: 0:177: 'noise' : no matching overloaded function found 
-ERROR: 0:177: 'reversebits' : no matching overloaded function found 
-ERROR: 0:177: 'length' : no matching overloaded function found 
-ERROR: 0:177: 'noise' : no matching overloaded function found 
-ERROR: 0:177: 'normalize' : no matching overloaded function found 
-ERROR: 0:177: 'reflect' : no matching overloaded function found 
-ERROR: 0:177: 'refract' : no matching overloaded function found 
-ERROR: 0:177: 'reversebits' : no matching overloaded function found 
-ERROR: 0:185: 'countbits' : no matching overloaded function found 
-ERROR: 0:185: 'cross' : no matching overloaded function found 
-ERROR: 0:185: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:185: 'ddx' : no matching overloaded function found 
-ERROR: 0:185: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:98: 'determinant' : no matching overloaded function found 
+ERROR: 0:99: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:100: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:101: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:102: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:103: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:104: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:105: 'fma' : no matching overloaded function found 
+ERROR: 0:106: 'fwidth' : no matching overloaded function found 
+ERROR: 0:107: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:108: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:109: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:110: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:111: 'InterlockedCompareExchange' : no matching overloaded function found 
+ERROR: 0:112: 'InterlockedExchange' : no matching overloaded function found 
+ERROR: 0:113: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:114: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:115: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:116: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:117: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:118: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:119: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:120: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:121: 'noise' : no matching overloaded function found 
+ERROR: 0:122: 'reversebits' : no matching overloaded function found 
+ERROR: 0:123: 'transpose' : no matching overloaded function found 
+ERROR: 0:134: 'CheckAccessFullyMapped' : no matching overloaded function found 
+ERROR: 0:135: 'countbits' : no matching overloaded function found 
+ERROR: 0:136: 'ddx' : no matching overloaded function found 
+ERROR: 0:137: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:138: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:139: 'ddy' : no matching overloaded function found 
+ERROR: 0:140: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:141: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:142: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:143: 'determinant' : no matching overloaded function found 
+ERROR: 0:144: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:145: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:146: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:147: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:148: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:149: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:150: 'fma' : no matching overloaded function found 
+ERROR: 0:151: 'fwidth' : no matching overloaded function found 
+ERROR: 0:152: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:153: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:154: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:155: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:156: 'InterlockedCompareExchange' : no matching overloaded function found 
+ERROR: 0:157: 'InterlockedExchange' : no matching overloaded function found 
+ERROR: 0:158: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:159: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:160: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:161: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:162: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:163: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:164: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:165: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:166: 'noise' : no matching overloaded function found 
+ERROR: 0:167: 'reversebits' : no matching overloaded function found 
+ERROR: 0:168: 'transpose' : no matching overloaded function found 
+ERROR: 0:179: 'CheckAccessFullyMapped' : no matching overloaded function found 
+ERROR: 0:180: 'countbits' : no matching overloaded function found 
+ERROR: 0:181: 'cross' : no matching overloaded function found 
+ERROR: 0:182: 'determinant' : no matching overloaded function found 
+ERROR: 0:183: 'ddx' : no matching overloaded function found 
+ERROR: 0:184: 'ddx_coarse' : no matching overloaded function found 
 ERROR: 0:185: 'ddx_fine' : no matching overloaded function found 
-ERROR: 0:185: 'ddy' : no matching overloaded function found 
-ERROR: 0:185: 'ddy_coarse' : no matching overloaded function found 
-ERROR: 0:185: 'ddy_fine' : no matching overloaded function found 
-ERROR: 0:185: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
-ERROR: 0:185: 'EvaluateAttributeAtSample' : no matching overloaded function found 
-ERROR: 0:185: 'EvaluateAttributeSnapped' : no matching overloaded function found 
-ERROR: 0:185: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:185: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:185: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:185: 'fma' : no matching overloaded function found 
-ERROR: 0:185: 'noise' : no matching overloaded function found 
-ERROR: 0:185: 'reversebits' : no matching overloaded function found 
-ERROR: 0:185: 'length' : no matching overloaded function found 
-ERROR: 0:185: 'noise' : no matching overloaded function found 
-ERROR: 0:185: 'normalize' : no matching overloaded function found 
-ERROR: 0:185: 'reflect' : no matching overloaded function found 
-ERROR: 0:185: 'refract' : no matching overloaded function found 
-ERROR: 0:185: 'reversebits' : no matching overloaded function found 
-ERROR: 0:193: 'countbits' : no matching overloaded function found 
-ERROR: 0:193: 'cross' : no matching overloaded function found 
-ERROR: 0:193: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:193: 'ddx' : no matching overloaded function found 
-ERROR: 0:193: 'ddx_coarse' : no matching overloaded function found 
-ERROR: 0:193: 'ddx_fine' : no matching overloaded function found 
-ERROR: 0:193: 'ddy' : no matching overloaded function found 
-ERROR: 0:193: 'ddy_coarse' : no matching overloaded function found 
-ERROR: 0:193: 'ddy_fine' : no matching overloaded function found 
-ERROR: 0:193: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
-ERROR: 0:193: 'EvaluateAttributeAtSample' : no matching overloaded function found 
-ERROR: 0:193: 'EvaluateAttributeSnapped' : no matching overloaded function found 
-ERROR: 0:193: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:186: 'ddy' : no matching overloaded function found 
+ERROR: 0:187: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:188: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:189: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:190: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:191: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:192: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:193: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:193: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:193: 'fma' : no matching overloaded function found 
-ERROR: 0:193: 'noise' : no matching overloaded function found 
-ERROR: 0:193: 'reversebits' : no matching overloaded function found 
-ERROR: 0:193: 'length' : no matching overloaded function found 
-ERROR: 0:193: 'noise' : no matching overloaded function found 
-ERROR: 0:193: 'normalize' : no matching overloaded function found 
-ERROR: 0:193: 'reflect' : no matching overloaded function found 
-ERROR: 0:193: 'refract' : no matching overloaded function found 
-ERROR: 0:193: 'reversebits' : no matching overloaded function found 
-ERROR: 164 compilation errors.  No code generated.
+ERROR: 0:194: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:195: 'fma' : no matching overloaded function found 
+ERROR: 0:196: 'fwidth' : no matching overloaded function found 
+ERROR: 0:197: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:198: 'InterlockedAdd' : no matching overloaded function found 
+ERROR: 0:199: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:200: 'InterlockedAnd' : no matching overloaded function found 
+ERROR: 0:201: 'InterlockedCompareExchange' : no matching overloaded function found 
+ERROR: 0:202: 'InterlockedExchange' : no matching overloaded function found 
+ERROR: 0:203: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:204: 'InterlockedMax' : no matching overloaded function found 
+ERROR: 0:205: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:206: 'InterlockedMin' : no matching overloaded function found 
+ERROR: 0:207: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:208: 'InterlockedOr' : no matching overloaded function found 
+ERROR: 0:209: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:210: 'InterlockedXor' : no matching overloaded function found 
+ERROR: 0:211: 'noise' : no matching overloaded function found 
+ERROR: 0:212: 'reversebits' : no matching overloaded function found 
+ERROR: 0:213: 'transpose' : no matching overloaded function found 
+ERROR: 0:254: 'countbits' : no matching overloaded function found 
+ERROR: 0:254: 'cross' : no matching overloaded function found 
+ERROR: 0:254: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:254: 'ddx' : no matching overloaded function found 
+ERROR: 0:254: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:254: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:254: 'ddy' : no matching overloaded function found 
+ERROR: 0:254: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:254: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:254: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:254: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:254: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:254: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:254: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:254: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:254: 'fma' : no matching overloaded function found 
+ERROR: 0:254: 'fwidth' : no matching overloaded function found 
+ERROR: 0:254: 'noise' : no matching overloaded function found 
+ERROR: 0:254: 'reversebits' : no matching overloaded function found 
+ERROR: 0:254: 'length' : no matching overloaded function found 
+ERROR: 0:254: 'noise' : no matching overloaded function found 
+ERROR: 0:254: 'normalize' : no matching overloaded function found 
+ERROR: 0:254: 'reflect' : no matching overloaded function found 
+ERROR: 0:254: 'refract' : no matching overloaded function found 
+ERROR: 0:254: 'reversebits' : no matching overloaded function found 
+ERROR: 0:262: 'countbits' : no matching overloaded function found 
+ERROR: 0:262: 'cross' : no matching overloaded function found 
+ERROR: 0:262: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:262: 'ddx' : no matching overloaded function found 
+ERROR: 0:262: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:262: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:262: 'ddy' : no matching overloaded function found 
+ERROR: 0:262: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:262: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:262: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:262: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:262: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:262: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:262: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:262: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:262: 'fma' : no matching overloaded function found 
+ERROR: 0:262: 'fwidth' : no matching overloaded function found 
+ERROR: 0:262: 'noise' : no matching overloaded function found 
+ERROR: 0:262: 'reversebits' : no matching overloaded function found 
+ERROR: 0:262: 'length' : no matching overloaded function found 
+ERROR: 0:262: 'noise' : no matching overloaded function found 
+ERROR: 0:262: 'normalize' : no matching overloaded function found 
+ERROR: 0:262: 'reflect' : no matching overloaded function found 
+ERROR: 0:262: 'refract' : no matching overloaded function found 
+ERROR: 0:262: 'reversebits' : no matching overloaded function found 
+ERROR: 0:270: 'countbits' : no matching overloaded function found 
+ERROR: 0:270: 'cross' : no matching overloaded function found 
+ERROR: 0:270: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:270: 'ddx' : no matching overloaded function found 
+ERROR: 0:270: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:270: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:270: 'ddy' : no matching overloaded function found 
+ERROR: 0:270: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:270: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:270: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:270: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:270: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:270: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:270: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:270: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:270: 'fma' : no matching overloaded function found 
+ERROR: 0:270: 'fwidth' : no matching overloaded function found 
+ERROR: 0:270: 'noise' : no matching overloaded function found 
+ERROR: 0:270: 'reversebits' : no matching overloaded function found 
+ERROR: 0:270: 'length' : no matching overloaded function found 
+ERROR: 0:270: 'noise' : no matching overloaded function found 
+ERROR: 0:270: 'normalize' : no matching overloaded function found 
+ERROR: 0:270: 'reflect' : no matching overloaded function found 
+ERROR: 0:270: 'refract' : no matching overloaded function found 
+ERROR: 0:270: 'reversebits' : no matching overloaded function found 
+ERROR: 227 compilation errors.  No code generated.
 
 
 Shader version: 450
 ERROR: node is still EOpNull!
-0:49  Function Definition: VertexShaderFunction(f1;f1;f1;i1; (temp float)
-0:2    Function Parameters: 
-0:2      'inF0' (temp float)
-0:2      'inF1' (temp float)
-0:2      'inF2' (temp float)
-0:2      'inI0' (temp int)
+0:74  Function Definition: VertexShaderFunction(f1;f1;f1;i1; (temp float)
+0:15    Function Parameters: 
+0:15      'inF0' (temp float)
+0:15      'inF1' (temp float)
+0:15      'inF2' (temp float)
+0:15      'inI0' (temp int)
 0:?     Sequence
-0:5      Constant:
-0:5        0.000000
-0:6      Constant:
-0:6        0.000000
-0:7      Constant:
-0:7        0.000000
-0:8      Constant:
-0:8        0.000000
-0:9      Constant:
-0:9        0.000000
-0:10      Constant:
-0:10        0.000000
-0:11      Constant:
-0:11        0.000000
-0:14      Constant:
-0:14        0.000000
-0:15      Constant:
-0:15        0.000000
-0:16      Constant:
-0:16        0.000000
-0:17      Constant:
-0:17        0.000000
-0:18      Constant:
-0:18        0.000000
-0:19      Constant:
-0:19        0.000000
 0:20      Constant:
 0:20        0.000000
 0:21      Constant:
@@ -215,8 +252,18 @@ ERROR: node is still EOpNull!
 0:25        0.000000
 0:26      Constant:
 0:26        0.000000
-0:27      Constant:
-0:27        0.000000
+0:29      Constant:
+0:29        0.000000
+0:30      Constant:
+0:30        0.000000
+0:31      Constant:
+0:31        0.000000
+0:32      Constant:
+0:32        0.000000
+0:33      Constant:
+0:33        0.000000
+0:34      Constant:
+0:34        0.000000
 0:35      Constant:
 0:35        0.000000
 0:36      Constant:
@@ -233,28 +280,36 @@ ERROR: node is still EOpNull!
 0:41        0.000000
 0:42      Constant:
 0:42        0.000000
-0:46      Branch: Return with expression
-0:46        Constant:
-0:46          0.000000
-0:58  Function Definition: VertexShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
-0:50    Function Parameters: 
-0:50      'inF0' (temp 1-component vector of float)
-0:50      'inF1' (temp 1-component vector of float)
-0:50      'inF2' (temp 1-component vector of float)
-0:50      'inI0' (temp 1-component vector of int)
-0:?     Sequence
+0:43      Constant:
+0:43        0.000000
+0:44      Constant:
+0:44        0.000000
+0:45      Constant:
+0:45        0.000000
+0:46      Constant:
+0:46        0.000000
+0:47      Constant:
+0:47        0.000000
+0:48      Constant:
+0:48        0.000000
+0:49      Constant:
+0:49        0.000000
+0:50      Constant:
+0:50        0.000000
+0:51      Constant:
+0:51        0.000000
+0:52      Constant:
+0:52        0.000000
 0:53      Constant:
 0:53        0.000000
-0:55      Branch: Return with expression
-0:55        Constant:
-0:55          0.000000
-0:88  Function Definition: VertexShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
-0:59    Function Parameters: 
-0:59      'inF0' (temp 2-component vector of float)
-0:59      'inF1' (temp 2-component vector of float)
-0:59      'inF2' (temp 2-component vector of float)
-0:59      'inI0' (temp 2-component vector of int)
-0:?     Sequence
+0:54      Constant:
+0:54        0.000000
+0:55      Constant:
+0:55        0.000000
+0:56      Constant:
+0:56        0.000000
+0:57      Constant:
+0:57        0.000000
 0:60      Constant:
 0:60        0.000000
 0:61      Constant:
@@ -271,45 +326,34 @@ ERROR: node is still EOpNull!
 0:66        0.000000
 0:67      Constant:
 0:67        0.000000
-0:68      Constant:
-0:68        0.000000
-0:69      Constant:
-0:69        0.000000
-0:70      Constant:
-0:70        0.000000
-0:71      Constant:
-0:71        0.000000
-0:72      Constant:
-0:72        0.000000
-0:73      Constant:
-0:73        0.000000
-0:74      Constant:
-0:74        0.000000
-0:75      Constant:
-0:75        0.000000
-0:76      Constant:
-0:76        0.000000
-0:77      Constant:
-0:77        0.000000
+0:71      Branch: Return with expression
+0:71        Constant:
+0:71          0.000000
+0:83  Function Definition: VertexShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
+0:75    Function Parameters: 
+0:75      'inF0' (temp 1-component vector of float)
+0:75      'inF1' (temp 1-component vector of float)
+0:75      'inF2' (temp 1-component vector of float)
+0:75      'inI0' (temp 1-component vector of int)
+0:?     Sequence
 0:78      Constant:
 0:78        0.000000
-0:79      Constant:
-0:79        0.000000
-0:80      Constant:
-0:80        0.000000
-0:81      Constant:
-0:81        0.000000
-0:85      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:116  Function Definition: VertexShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
-0:89    Function Parameters: 
-0:89      'inF0' (temp 3-component vector of float)
-0:89      'inF1' (temp 3-component vector of float)
-0:89      'inF2' (temp 3-component vector of float)
-0:89      'inI0' (temp 3-component vector of int)
+0:80      Branch: Return with expression
+0:80        Constant:
+0:80          0.000000
+0:130  Function Definition: VertexShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
+0:84    Function Parameters: 
+0:84      'inF0' (temp 2-component vector of float)
+0:84      'inF1' (temp 2-component vector of float)
+0:84      'inF2' (temp 2-component vector of float)
+0:84      'inI0' (temp 2-component vector of int)
 0:?     Sequence
+0:87      Constant:
+0:87        0.000000
+0:88      Constant:
+0:88        0.000000
+0:89      Constant:
+0:89        0.000000
 0:90      Constant:
 0:90        0.000000
 0:91      Constant:
@@ -350,18 +394,22 @@ ERROR: node is still EOpNull!
 0:108        0.000000
 0:109      Constant:
 0:109        0.000000
-0:113      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:174  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
-0:117    Function Parameters: 
-0:117      'inF0' (temp 4-component vector of float)
-0:117      'inF1' (temp 4-component vector of float)
-0:117      'inF2' (temp 4-component vector of float)
-0:117      'inI0' (temp 4-component vector of int)
-0:?     Sequence
+0:110      Constant:
+0:110        0.000000
+0:111      Constant:
+0:111        0.000000
+0:112      Constant:
+0:112        0.000000
+0:113      Constant:
+0:113        0.000000
+0:114      Constant:
+0:114        0.000000
+0:115      Constant:
+0:115        0.000000
+0:116      Constant:
+0:116        0.000000
+0:117      Constant:
+0:117        0.000000
 0:118      Constant:
 0:118        0.000000
 0:119      Constant:
@@ -374,26 +422,17 @@ ERROR: node is still EOpNull!
 0:122        0.000000
 0:123      Constant:
 0:123        0.000000
-0:124      Constant:
-0:124        0.000000
-0:125      Constant:
-0:125        0.000000
-0:126      Constant:
-0:126        0.000000
-0:127      Constant:
-0:127        0.000000
-0:128      Constant:
-0:128        0.000000
-0:129      Constant:
-0:129        0.000000
-0:130      Constant:
-0:130        0.000000
-0:131      Constant:
-0:131        0.000000
-0:132      Constant:
-0:132        0.000000
-0:133      Constant:
-0:133        0.000000
+0:127      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:175  Function Definition: VertexShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
+0:131    Function Parameters: 
+0:131      'inF0' (temp 3-component vector of float)
+0:131      'inF1' (temp 3-component vector of float)
+0:131      'inF2' (temp 3-component vector of float)
+0:131      'inI0' (temp 3-component vector of int)
+0:?     Sequence
 0:134      Constant:
 0:134        0.000000
 0:135      Constant:
@@ -402,127 +441,275 @@ ERROR: node is still EOpNull!
 0:136        0.000000
 0:137      Constant:
 0:137        0.000000
-0:141      Branch: Return with expression
+0:138      Constant:
+0:138        0.000000
+0:139      Constant:
+0:139        0.000000
+0:140      Constant:
+0:140        0.000000
+0:141      Constant:
+0:141        0.000000
+0:142      Constant:
+0:142        0.000000
+0:143      Constant:
+0:143        0.000000
+0:144      Constant:
+0:144        0.000000
+0:145      Constant:
+0:145        0.000000
+0:146      Constant:
+0:146        0.000000
+0:147      Constant:
+0:147        0.000000
+0:148      Constant:
+0:148        0.000000
+0:149      Constant:
+0:149        0.000000
+0:150      Constant:
+0:150        0.000000
+0:151      Constant:
+0:151        0.000000
+0:152      Constant:
+0:152        0.000000
+0:153      Constant:
+0:153        0.000000
+0:154      Constant:
+0:154        0.000000
+0:155      Constant:
+0:155        0.000000
+0:156      Constant:
+0:156        0.000000
+0:157      Constant:
+0:157        0.000000
+0:158      Constant:
+0:158        0.000000
+0:159      Constant:
+0:159        0.000000
+0:160      Constant:
+0:160        0.000000
+0:161      Constant:
+0:161        0.000000
+0:162      Constant:
+0:162        0.000000
+0:163      Constant:
+0:163        0.000000
+0:164      Constant:
+0:164        0.000000
+0:165      Constant:
+0:165        0.000000
+0:166      Constant:
+0:166        0.000000
+0:167      Constant:
+0:167        0.000000
+0:168      Constant:
+0:168        0.000000
+0:172      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:251  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
+0:176    Function Parameters: 
+0:176      'inF0' (temp 4-component vector of float)
+0:176      'inF1' (temp 4-component vector of float)
+0:176      'inF2' (temp 4-component vector of float)
+0:176      'inI0' (temp 4-component vector of int)
+0:?     Sequence
+0:179      Constant:
+0:179        0.000000
+0:180      Constant:
+0:180        0.000000
+0:181      Constant:
+0:181        0.000000
+0:182      Constant:
+0:182        0.000000
+0:183      Constant:
+0:183        0.000000
+0:184      Constant:
+0:184        0.000000
+0:185      Constant:
+0:185        0.000000
+0:186      Constant:
+0:186        0.000000
+0:187      Constant:
+0:187        0.000000
+0:188      Constant:
+0:188        0.000000
+0:189      Constant:
+0:189        0.000000
+0:190      Constant:
+0:190        0.000000
+0:191      Constant:
+0:191        0.000000
+0:192      Constant:
+0:192        0.000000
+0:193      Constant:
+0:193        0.000000
+0:194      Constant:
+0:194        0.000000
+0:195      Constant:
+0:195        0.000000
+0:196      Constant:
+0:196        0.000000
+0:197      Constant:
+0:197        0.000000
+0:198      Constant:
+0:198        0.000000
+0:199      Constant:
+0:199        0.000000
+0:200      Constant:
+0:200        0.000000
+0:201      Constant:
+0:201        0.000000
+0:202      Constant:
+0:202        0.000000
+0:203      Constant:
+0:203        0.000000
+0:204      Constant:
+0:204        0.000000
+0:205      Constant:
+0:205        0.000000
+0:206      Constant:
+0:206        0.000000
+0:207      Constant:
+0:207        0.000000
+0:208      Constant:
+0:208        0.000000
+0:209      Constant:
+0:209        0.000000
+0:210      Constant:
+0:210        0.000000
+0:211      Constant:
+0:211        0.000000
+0:212      Constant:
+0:212        0.000000
+0:213      Constant:
+0:213        0.000000
+0:217      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:182  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
-0:175    Function Parameters: 
-0:175      'inF0' (temp 2X2 matrix of float)
-0:175      'inF1' (temp 2X2 matrix of float)
-0:175      'inF2' (temp 2X2 matrix of float)
+0:259  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
+0:252    Function Parameters: 
+0:252      'inF0' (temp 2X2 matrix of float)
+0:252      'inF1' (temp 2X2 matrix of float)
+0:252      'inF2' (temp 2X2 matrix of float)
 0:?     Sequence
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:179      Branch: Return with expression
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:256      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:190  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
-0:183    Function Parameters: 
-0:183      'inF0' (temp 3X3 matrix of float)
-0:183      'inF1' (temp 3X3 matrix of float)
-0:183      'inF2' (temp 3X3 matrix of float)
+0:267  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
+0:260    Function Parameters: 
+0:260      'inF0' (temp 3X3 matrix of float)
+0:260      'inF1' (temp 3X3 matrix of float)
+0:260      'inF2' (temp 3X3 matrix of float)
 0:?     Sequence
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:187      Branch: Return with expression
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:264      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -533,61 +720,63 @@ ERROR: node is still EOpNull!
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:197  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
-0:191    Function Parameters: 
-0:191      'inF0' (temp 4X4 matrix of float)
-0:191      'inF1' (temp 4X4 matrix of float)
-0:191      'inF2' (temp 4X4 matrix of float)
+0:274  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
+0:268    Function Parameters: 
+0:268      'inF0' (temp 4X4 matrix of float)
+0:268      'inF1' (temp 4X4 matrix of float)
+0:268      'inF2' (temp 4X4 matrix of float)
 0:?     Sequence
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:195      Branch: Return with expression
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:272      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
@@ -606,6 +795,18 @@ ERROR: node is still EOpNull!
 0:?           4.000000
 0:?           4.000000
 0:?   Linker Objects
+0:?     'gs_ua' (temp uint)
+0:?     'gs_ub' (temp uint)
+0:?     'gs_uc' (temp uint)
+0:?     'gs_ua2' (temp 2-component vector of uint)
+0:?     'gs_ub2' (temp 2-component vector of uint)
+0:?     'gs_uc2' (temp 2-component vector of uint)
+0:?     'gs_ua3' (temp 3-component vector of uint)
+0:?     'gs_ub3' (temp 3-component vector of uint)
+0:?     'gs_uc3' (temp 3-component vector of uint)
+0:?     'gs_ua4' (temp 4-component vector of uint)
+0:?     'gs_ub4' (temp 4-component vector of uint)
+0:?     'gs_uc4' (temp 4-component vector of uint)
 
 
 Linked vertex stage:
@@ -613,39 +814,13 @@ Linked vertex stage:
 
 Shader version: 450
 ERROR: node is still EOpNull!
-0:49  Function Definition: VertexShaderFunction(f1;f1;f1;i1; (temp float)
-0:2    Function Parameters: 
-0:2      'inF0' (temp float)
-0:2      'inF1' (temp float)
-0:2      'inF2' (temp float)
-0:2      'inI0' (temp int)
+0:74  Function Definition: VertexShaderFunction(f1;f1;f1;i1; (temp float)
+0:15    Function Parameters: 
+0:15      'inF0' (temp float)
+0:15      'inF1' (temp float)
+0:15      'inF2' (temp float)
+0:15      'inI0' (temp int)
 0:?     Sequence
-0:5      Constant:
-0:5        0.000000
-0:6      Constant:
-0:6        0.000000
-0:7      Constant:
-0:7        0.000000
-0:8      Constant:
-0:8        0.000000
-0:9      Constant:
-0:9        0.000000
-0:10      Constant:
-0:10        0.000000
-0:11      Constant:
-0:11        0.000000
-0:14      Constant:
-0:14        0.000000
-0:15      Constant:
-0:15        0.000000
-0:16      Constant:
-0:16        0.000000
-0:17      Constant:
-0:17        0.000000
-0:18      Constant:
-0:18        0.000000
-0:19      Constant:
-0:19        0.000000
 0:20      Constant:
 0:20        0.000000
 0:21      Constant:
@@ -660,8 +835,18 @@ ERROR: node is still EOpNull!
 0:25        0.000000
 0:26      Constant:
 0:26        0.000000
-0:27      Constant:
-0:27        0.000000
+0:29      Constant:
+0:29        0.000000
+0:30      Constant:
+0:30        0.000000
+0:31      Constant:
+0:31        0.000000
+0:32      Constant:
+0:32        0.000000
+0:33      Constant:
+0:33        0.000000
+0:34      Constant:
+0:34        0.000000
 0:35      Constant:
 0:35        0.000000
 0:36      Constant:
@@ -678,28 +863,36 @@ ERROR: node is still EOpNull!
 0:41        0.000000
 0:42      Constant:
 0:42        0.000000
-0:46      Branch: Return with expression
-0:46        Constant:
-0:46          0.000000
-0:58  Function Definition: VertexShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
-0:50    Function Parameters: 
-0:50      'inF0' (temp 1-component vector of float)
-0:50      'inF1' (temp 1-component vector of float)
-0:50      'inF2' (temp 1-component vector of float)
-0:50      'inI0' (temp 1-component vector of int)
-0:?     Sequence
+0:43      Constant:
+0:43        0.000000
+0:44      Constant:
+0:44        0.000000
+0:45      Constant:
+0:45        0.000000
+0:46      Constant:
+0:46        0.000000
+0:47      Constant:
+0:47        0.000000
+0:48      Constant:
+0:48        0.000000
+0:49      Constant:
+0:49        0.000000
+0:50      Constant:
+0:50        0.000000
+0:51      Constant:
+0:51        0.000000
+0:52      Constant:
+0:52        0.000000
 0:53      Constant:
 0:53        0.000000
-0:55      Branch: Return with expression
-0:55        Constant:
-0:55          0.000000
-0:88  Function Definition: VertexShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
-0:59    Function Parameters: 
-0:59      'inF0' (temp 2-component vector of float)
-0:59      'inF1' (temp 2-component vector of float)
-0:59      'inF2' (temp 2-component vector of float)
-0:59      'inI0' (temp 2-component vector of int)
-0:?     Sequence
+0:54      Constant:
+0:54        0.000000
+0:55      Constant:
+0:55        0.000000
+0:56      Constant:
+0:56        0.000000
+0:57      Constant:
+0:57        0.000000
 0:60      Constant:
 0:60        0.000000
 0:61      Constant:
@@ -716,45 +909,34 @@ ERROR: node is still EOpNull!
 0:66        0.000000
 0:67      Constant:
 0:67        0.000000
-0:68      Constant:
-0:68        0.000000
-0:69      Constant:
-0:69        0.000000
-0:70      Constant:
-0:70        0.000000
-0:71      Constant:
-0:71        0.000000
-0:72      Constant:
-0:72        0.000000
-0:73      Constant:
-0:73        0.000000
-0:74      Constant:
-0:74        0.000000
-0:75      Constant:
-0:75        0.000000
-0:76      Constant:
-0:76        0.000000
-0:77      Constant:
-0:77        0.000000
+0:71      Branch: Return with expression
+0:71        Constant:
+0:71          0.000000
+0:83  Function Definition: VertexShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
+0:75    Function Parameters: 
+0:75      'inF0' (temp 1-component vector of float)
+0:75      'inF1' (temp 1-component vector of float)
+0:75      'inF2' (temp 1-component vector of float)
+0:75      'inI0' (temp 1-component vector of int)
+0:?     Sequence
 0:78      Constant:
 0:78        0.000000
-0:79      Constant:
-0:79        0.000000
-0:80      Constant:
-0:80        0.000000
-0:81      Constant:
-0:81        0.000000
-0:85      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:116  Function Definition: VertexShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
-0:89    Function Parameters: 
-0:89      'inF0' (temp 3-component vector of float)
-0:89      'inF1' (temp 3-component vector of float)
-0:89      'inF2' (temp 3-component vector of float)
-0:89      'inI0' (temp 3-component vector of int)
+0:80      Branch: Return with expression
+0:80        Constant:
+0:80          0.000000
+0:130  Function Definition: VertexShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
+0:84    Function Parameters: 
+0:84      'inF0' (temp 2-component vector of float)
+0:84      'inF1' (temp 2-component vector of float)
+0:84      'inF2' (temp 2-component vector of float)
+0:84      'inI0' (temp 2-component vector of int)
 0:?     Sequence
+0:87      Constant:
+0:87        0.000000
+0:88      Constant:
+0:88        0.000000
+0:89      Constant:
+0:89        0.000000
 0:90      Constant:
 0:90        0.000000
 0:91      Constant:
@@ -795,18 +977,22 @@ ERROR: node is still EOpNull!
 0:108        0.000000
 0:109      Constant:
 0:109        0.000000
-0:113      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:174  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
-0:117    Function Parameters: 
-0:117      'inF0' (temp 4-component vector of float)
-0:117      'inF1' (temp 4-component vector of float)
-0:117      'inF2' (temp 4-component vector of float)
-0:117      'inI0' (temp 4-component vector of int)
-0:?     Sequence
+0:110      Constant:
+0:110        0.000000
+0:111      Constant:
+0:111        0.000000
+0:112      Constant:
+0:112        0.000000
+0:113      Constant:
+0:113        0.000000
+0:114      Constant:
+0:114        0.000000
+0:115      Constant:
+0:115        0.000000
+0:116      Constant:
+0:116        0.000000
+0:117      Constant:
+0:117        0.000000
 0:118      Constant:
 0:118        0.000000
 0:119      Constant:
@@ -819,26 +1005,17 @@ ERROR: node is still EOpNull!
 0:122        0.000000
 0:123      Constant:
 0:123        0.000000
-0:124      Constant:
-0:124        0.000000
-0:125      Constant:
-0:125        0.000000
-0:126      Constant:
-0:126        0.000000
-0:127      Constant:
-0:127        0.000000
-0:128      Constant:
-0:128        0.000000
-0:129      Constant:
-0:129        0.000000
-0:130      Constant:
-0:130        0.000000
-0:131      Constant:
-0:131        0.000000
-0:132      Constant:
-0:132        0.000000
-0:133      Constant:
-0:133        0.000000
+0:127      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:175  Function Definition: VertexShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
+0:131    Function Parameters: 
+0:131      'inF0' (temp 3-component vector of float)
+0:131      'inF1' (temp 3-component vector of float)
+0:131      'inF2' (temp 3-component vector of float)
+0:131      'inI0' (temp 3-component vector of int)
+0:?     Sequence
 0:134      Constant:
 0:134        0.000000
 0:135      Constant:
@@ -847,127 +1024,275 @@ ERROR: node is still EOpNull!
 0:136        0.000000
 0:137      Constant:
 0:137        0.000000
-0:141      Branch: Return with expression
+0:138      Constant:
+0:138        0.000000
+0:139      Constant:
+0:139        0.000000
+0:140      Constant:
+0:140        0.000000
+0:141      Constant:
+0:141        0.000000
+0:142      Constant:
+0:142        0.000000
+0:143      Constant:
+0:143        0.000000
+0:144      Constant:
+0:144        0.000000
+0:145      Constant:
+0:145        0.000000
+0:146      Constant:
+0:146        0.000000
+0:147      Constant:
+0:147        0.000000
+0:148      Constant:
+0:148        0.000000
+0:149      Constant:
+0:149        0.000000
+0:150      Constant:
+0:150        0.000000
+0:151      Constant:
+0:151        0.000000
+0:152      Constant:
+0:152        0.000000
+0:153      Constant:
+0:153        0.000000
+0:154      Constant:
+0:154        0.000000
+0:155      Constant:
+0:155        0.000000
+0:156      Constant:
+0:156        0.000000
+0:157      Constant:
+0:157        0.000000
+0:158      Constant:
+0:158        0.000000
+0:159      Constant:
+0:159        0.000000
+0:160      Constant:
+0:160        0.000000
+0:161      Constant:
+0:161        0.000000
+0:162      Constant:
+0:162        0.000000
+0:163      Constant:
+0:163        0.000000
+0:164      Constant:
+0:164        0.000000
+0:165      Constant:
+0:165        0.000000
+0:166      Constant:
+0:166        0.000000
+0:167      Constant:
+0:167        0.000000
+0:168      Constant:
+0:168        0.000000
+0:172      Branch: Return with expression
+0:?         Constant:
+0:?           1.000000
+0:?           2.000000
+0:?           3.000000
+0:251  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
+0:176    Function Parameters: 
+0:176      'inF0' (temp 4-component vector of float)
+0:176      'inF1' (temp 4-component vector of float)
+0:176      'inF2' (temp 4-component vector of float)
+0:176      'inI0' (temp 4-component vector of int)
+0:?     Sequence
+0:179      Constant:
+0:179        0.000000
+0:180      Constant:
+0:180        0.000000
+0:181      Constant:
+0:181        0.000000
+0:182      Constant:
+0:182        0.000000
+0:183      Constant:
+0:183        0.000000
+0:184      Constant:
+0:184        0.000000
+0:185      Constant:
+0:185        0.000000
+0:186      Constant:
+0:186        0.000000
+0:187      Constant:
+0:187        0.000000
+0:188      Constant:
+0:188        0.000000
+0:189      Constant:
+0:189        0.000000
+0:190      Constant:
+0:190        0.000000
+0:191      Constant:
+0:191        0.000000
+0:192      Constant:
+0:192        0.000000
+0:193      Constant:
+0:193        0.000000
+0:194      Constant:
+0:194        0.000000
+0:195      Constant:
+0:195        0.000000
+0:196      Constant:
+0:196        0.000000
+0:197      Constant:
+0:197        0.000000
+0:198      Constant:
+0:198        0.000000
+0:199      Constant:
+0:199        0.000000
+0:200      Constant:
+0:200        0.000000
+0:201      Constant:
+0:201        0.000000
+0:202      Constant:
+0:202        0.000000
+0:203      Constant:
+0:203        0.000000
+0:204      Constant:
+0:204        0.000000
+0:205      Constant:
+0:205        0.000000
+0:206      Constant:
+0:206        0.000000
+0:207      Constant:
+0:207        0.000000
+0:208      Constant:
+0:208        0.000000
+0:209      Constant:
+0:209        0.000000
+0:210      Constant:
+0:210        0.000000
+0:211      Constant:
+0:211        0.000000
+0:212      Constant:
+0:212        0.000000
+0:213      Constant:
+0:213        0.000000
+0:217      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:182  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
-0:175    Function Parameters: 
-0:175      'inF0' (temp 2X2 matrix of float)
-0:175      'inF1' (temp 2X2 matrix of float)
-0:175      'inF2' (temp 2X2 matrix of float)
+0:259  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
+0:252    Function Parameters: 
+0:252      'inF0' (temp 2X2 matrix of float)
+0:252      'inF1' (temp 2X2 matrix of float)
+0:252      'inF2' (temp 2X2 matrix of float)
 0:?     Sequence
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:177      Constant:
-0:177        0.000000
-0:179      Branch: Return with expression
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:254      Constant:
+0:254        0.000000
+0:256      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:190  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
-0:183    Function Parameters: 
-0:183      'inF0' (temp 3X3 matrix of float)
-0:183      'inF1' (temp 3X3 matrix of float)
-0:183      'inF2' (temp 3X3 matrix of float)
+0:267  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
+0:260    Function Parameters: 
+0:260      'inF0' (temp 3X3 matrix of float)
+0:260      'inF1' (temp 3X3 matrix of float)
+0:260      'inF2' (temp 3X3 matrix of float)
 0:?     Sequence
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:185      Constant:
-0:185        0.000000
-0:187      Branch: Return with expression
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:262      Constant:
+0:262        0.000000
+0:264      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -978,61 +1303,63 @@ ERROR: node is still EOpNull!
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:197  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
-0:191    Function Parameters: 
-0:191      'inF0' (temp 4X4 matrix of float)
-0:191      'inF1' (temp 4X4 matrix of float)
-0:191      'inF2' (temp 4X4 matrix of float)
+0:274  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
+0:268    Function Parameters: 
+0:268      'inF0' (temp 4X4 matrix of float)
+0:268      'inF1' (temp 4X4 matrix of float)
+0:268      'inF2' (temp 4X4 matrix of float)
 0:?     Sequence
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:193      Constant:
-0:193        0.000000
-0:195      Branch: Return with expression
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:270      Constant:
+0:270        0.000000
+0:272      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
@@ -1051,5 +1378,17 @@ ERROR: node is still EOpNull!
 0:?           4.000000
 0:?           4.000000
 0:?   Linker Objects
+0:?     'gs_ua' (temp uint)
+0:?     'gs_ub' (temp uint)
+0:?     'gs_uc' (temp uint)
+0:?     'gs_ua2' (temp 2-component vector of uint)
+0:?     'gs_ub2' (temp 2-component vector of uint)
+0:?     'gs_uc2' (temp 2-component vector of uint)
+0:?     'gs_ua3' (temp 3-component vector of uint)
+0:?     'gs_ub3' (temp 3-component vector of uint)
+0:?     'gs_uc3' (temp 3-component vector of uint)
+0:?     'gs_ua4' (temp 4-component vector of uint)
+0:?     'gs_ub4' (temp 4-component vector of uint)
+0:?     'gs_uc4' (temp 4-component vector of uint)
 
 SPIR-V is not generated for failed compile or link
index 6f92fc3..a4a6b04 100644 (file)
@@ -1,11 +1,13 @@
 hlsl.intrinsics.vert
 Shader version: 450
 0:? Sequence
-0:59  Function Definition: VertexShaderFunction(f1;f1;f1; (temp float)
+0:62  Function Definition: VertexShaderFunction(f1;f1;f1;u1;u1; (temp float)
 0:2    Function Parameters: 
 0:2      'inF0' (temp float)
 0:2      'inF1' (temp float)
 0:2      'inF2' (temp float)
+0:2      'inU0' (temp uint)
+0:2      'inU1' (temp uint)
 0:?     Sequence
 0:3      all (global bool)
 0:3        'inF0' (temp float)
@@ -17,881 +19,899 @@ Shader version: 450
 0:6        'inF0' (temp float)
 0:7      arc sine (global float)
 0:7        'inF0' (temp float)
-0:8      arc tangent (global float)
+0:8      floatBitsToInt (global int)
 0:8        'inF0' (temp float)
-0:9      arc tangent (global float)
+0:9      floatBitsToUint (global uint)
 0:9        'inF0' (temp float)
-0:9        'inF1' (temp float)
-0:10      Ceiling (global float)
-0:10        'inF0' (temp float)
-0:11      clamp (global float)
-0:11        'inF0' (temp float)
-0:11        'inF1' (temp float)
-0:11        'inF2' (temp float)
-0:12      cosine (global float)
+0:10      intBitsToFloat (global float)
+0:10        'inU0' (temp uint)
+0:12      arc tangent (global float)
 0:12        'inF0' (temp float)
-0:13      hyp. cosine (global float)
+0:13      arc tangent (global float)
 0:13        'inF0' (temp float)
-0:14      bitCount (global uint)
-0:14        Constant:
-0:14          7 (const uint)
-0:15      degrees (global float)
+0:13        'inF1' (temp float)
+0:14      Ceiling (global float)
+0:14        'inF0' (temp float)
+0:15      clamp (global float)
 0:15        'inF0' (temp float)
-0:19      exp (global float)
+0:15        'inF1' (temp float)
+0:15        'inF2' (temp float)
+0:16      cosine (global float)
+0:16        'inF0' (temp float)
+0:17      hyp. cosine (global float)
+0:17        'inF0' (temp float)
+0:18      bitCount (global uint)
+0:18        Constant:
+0:18          7 (const uint)
+0:19      degrees (global float)
 0:19        'inF0' (temp float)
-0:20      exp2 (global float)
-0:20        'inF0' (temp float)
-0:21      findMSB (global int)
-0:21        Constant:
-0:21          7 (const int)
-0:22      findLSB (global int)
-0:22        Constant:
-0:22          7 (const int)
-0:23      Floor (global float)
+0:23      exp (global float)
 0:23        'inF0' (temp float)
-0:25      mod (global float)
-0:25        'inF0' (temp float)
-0:25        'inF1' (temp float)
-0:26      Fraction (global float)
-0:26        'inF0' (temp float)
-0:27      frexp (global float)
+0:24      exp2 (global float)
+0:24        'inF0' (temp float)
+0:25      findMSB (global int)
+0:25        Constant:
+0:25          7 (const int)
+0:26      findLSB (global int)
+0:26        Constant:
+0:26          7 (const int)
+0:27      Floor (global float)
 0:27        'inF0' (temp float)
-0:27        'inF1' (temp float)
-0:28      fwidth (global float)
-0:28        'inF0' (temp float)
-0:29      isinf (global bool)
+0:29      mod (global float)
 0:29        'inF0' (temp float)
-0:30      isnan (global bool)
+0:29        'inF1' (temp float)
+0:30      Fraction (global float)
 0:30        'inF0' (temp float)
-0:31      ldexp (global float)
+0:31      frexp (global float)
 0:31        'inF0' (temp float)
 0:31        'inF1' (temp float)
-0:32      log (global float)
+0:32      isinf (global bool)
 0:32        'inF0' (temp float)
-0:33      component-wise multiply (temp float)
-0:33        log2 (temp float)
-0:33          'inF0' (temp float)
-0:33        Constant:
-0:33          0.301030
-0:34      log2 (global float)
+0:33      isnan (global bool)
+0:33        'inF0' (temp float)
+0:34      ldexp (global float)
 0:34        'inF0' (temp float)
-0:35      max (global float)
+0:34        'inF1' (temp float)
+0:35      log (global float)
 0:35        'inF0' (temp float)
-0:35        'inF1' (temp float)
-0:36      min (global float)
-0:36        'inF0' (temp float)
-0:36        'inF1' (temp float)
-0:38      pow (global float)
+0:36      component-wise multiply (temp float)
+0:36        log2 (temp float)
+0:36          'inF0' (temp float)
+0:36        Constant:
+0:36          0.301030
+0:37      log2 (global float)
+0:37        'inF0' (temp float)
+0:38      max (global float)
 0:38        'inF0' (temp float)
 0:38        'inF1' (temp float)
-0:39      radians (global float)
+0:39      min (global float)
 0:39        'inF0' (temp float)
-0:40      bitFieldReverse (global uint)
-0:40        Constant:
-0:40          2 (const uint)
-0:41      roundEven (global float)
+0:39        'inF1' (temp float)
+0:41      pow (global float)
 0:41        'inF0' (temp float)
-0:42      inverse sqrt (global float)
+0:41        'inF1' (temp float)
+0:42      radians (global float)
 0:42        'inF0' (temp float)
-0:43      clamp (global float)
-0:43        'inF0' (temp float)
+0:43      bitFieldReverse (global uint)
 0:43        Constant:
-0:43          0.000000
-0:43        Constant:
-0:43          1.000000
-0:44      Sign (global float)
+0:43          2 (const uint)
+0:44      roundEven (global float)
 0:44        'inF0' (temp float)
-0:45      sine (global float)
+0:45      inverse sqrt (global float)
 0:45        'inF0' (temp float)
-0:46      Sequence
-0:46        move second child to first child (temp float)
-0:46          'inF1' (temp float)
-0:46          sine (temp float)
-0:46            'inF0' (temp float)
-0:46        move second child to first child (temp float)
-0:46          'inF2' (temp float)
-0:46          cosine (temp float)
-0:46            'inF0' (temp float)
-0:47      hyp. sine (global float)
+0:46      clamp (temp float)
+0:46        'inF0' (temp float)
+0:46        Constant:
+0:46          0.000000
+0:46        Constant:
+0:46          1.000000
+0:47      Sign (global float)
 0:47        'inF0' (temp float)
-0:48      smoothstep (global float)
+0:48      sine (global float)
 0:48        'inF0' (temp float)
-0:48        'inF1' (temp float)
-0:48        'inF2' (temp float)
-0:49      sqrt (global float)
-0:49        'inF0' (temp float)
-0:50      step (global float)
+0:49      Sequence
+0:49        move second child to first child (temp float)
+0:49          'inF1' (temp float)
+0:49          sine (temp float)
+0:49            'inF0' (temp float)
+0:49        move second child to first child (temp float)
+0:49          'inF2' (temp float)
+0:49          cosine (temp float)
+0:49            'inF0' (temp float)
+0:50      hyp. sine (global float)
 0:50        'inF0' (temp float)
-0:50        'inF1' (temp float)
-0:51      tangent (global float)
+0:51      smoothstep (global float)
 0:51        'inF0' (temp float)
-0:52      hyp. tangent (global float)
+0:51        'inF1' (temp float)
+0:51        'inF2' (temp float)
+0:52      sqrt (global float)
 0:52        'inF0' (temp float)
-0:54      trunc (global float)
+0:53      step (global float)
+0:53        'inF0' (temp float)
+0:53        'inF1' (temp float)
+0:54      tangent (global float)
 0:54        'inF0' (temp float)
-0:56      Branch: Return with expression
-0:56        Constant:
-0:56          0.000000
-0:65  Function Definition: VertexShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
-0:60    Function Parameters: 
-0:60      'inF0' (temp 1-component vector of float)
-0:60      'inF1' (temp 1-component vector of float)
-0:60      'inF2' (temp 1-component vector of float)
+0:55      hyp. tangent (global float)
+0:55        'inF0' (temp float)
+0:57      trunc (global float)
+0:57        'inF0' (temp float)
+0:59      Branch: Return with expression
+0:59        Constant:
+0:59          0.000000
+0:68  Function Definition: VertexShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
+0:63    Function Parameters: 
+0:63      'inF0' (temp 1-component vector of float)
+0:63      'inF1' (temp 1-component vector of float)
+0:63      'inF2' (temp 1-component vector of float)
 0:?     Sequence
-0:62      Branch: Return with expression
-0:62        Constant:
-0:62          0.000000
-0:131  Function Definition: VertexShaderFunction(vf2;vf2;vf2; (temp 2-component vector of float)
-0:66    Function Parameters: 
-0:66      'inF0' (temp 2-component vector of float)
-0:66      'inF1' (temp 2-component vector of float)
-0:66      'inF2' (temp 2-component vector of float)
+0:65      Branch: Return with expression
+0:65        Constant:
+0:65          0.000000
+0:137  Function Definition: VertexShaderFunction(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
+0:69    Function Parameters: 
+0:69      'inF0' (temp 2-component vector of float)
+0:69      'inF1' (temp 2-component vector of float)
+0:69      'inF2' (temp 2-component vector of float)
+0:69      'inU0' (temp 2-component vector of uint)
+0:69      'inU1' (temp 2-component vector of uint)
 0:?     Sequence
-0:67      all (global bool)
-0:67        'inF0' (temp 2-component vector of float)
-0:68      Absolute value (global 2-component vector of float)
-0:68        'inF0' (temp 2-component vector of float)
-0:69      arc cosine (global 2-component vector of float)
-0:69        'inF0' (temp 2-component vector of float)
-0:70      any (global bool)
+0:70      all (global bool)
 0:70        'inF0' (temp 2-component vector of float)
-0:71      arc sine (global 2-component vector of float)
+0:71      Absolute value (global 2-component vector of float)
 0:71        'inF0' (temp 2-component vector of float)
-0:72      arc tangent (global 2-component vector of float)
+0:72      arc cosine (global 2-component vector of float)
 0:72        'inF0' (temp 2-component vector of float)
-0:73      arc tangent (global 2-component vector of float)
+0:73      any (global bool)
 0:73        'inF0' (temp 2-component vector of float)
-0:73        'inF1' (temp 2-component vector of float)
-0:74      Ceiling (global 2-component vector of float)
+0:74      arc sine (global 2-component vector of float)
 0:74        'inF0' (temp 2-component vector of float)
-0:75      clamp (global 2-component vector of float)
+0:75      floatBitsToInt (global 2-component vector of int)
 0:75        'inF0' (temp 2-component vector of float)
-0:75        'inF1' (temp 2-component vector of float)
-0:75        'inF2' (temp 2-component vector of float)
-0:76      cosine (global 2-component vector of float)
+0:76      floatBitsToUint (global 2-component vector of uint)
 0:76        'inF0' (temp 2-component vector of float)
-0:77      hyp. cosine (global 2-component vector of float)
-0:77        'inF0' (temp 2-component vector of float)
-0:?       bitCount (global 2-component vector of uint)
-0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:79      degrees (global 2-component vector of float)
+0:77      intBitsToFloat (global 2-component vector of float)
+0:77        'inU0' (temp 2-component vector of uint)
+0:79      arc tangent (global 2-component vector of float)
 0:79        'inF0' (temp 2-component vector of float)
-0:80      distance (global float)
+0:80      arc tangent (global 2-component vector of float)
 0:80        'inF0' (temp 2-component vector of float)
 0:80        'inF1' (temp 2-component vector of float)
-0:81      dot-product (global float)
+0:81      Ceiling (global 2-component vector of float)
 0:81        'inF0' (temp 2-component vector of float)
-0:81        'inF1' (temp 2-component vector of float)
-0:85      exp (global 2-component vector of float)
-0:85        'inF0' (temp 2-component vector of float)
-0:86      exp2 (global 2-component vector of float)
+0:82      clamp (global 2-component vector of float)
+0:82        'inF0' (temp 2-component vector of float)
+0:82        'inF1' (temp 2-component vector of float)
+0:82        'inF2' (temp 2-component vector of float)
+0:83      cosine (global 2-component vector of float)
+0:83        'inF0' (temp 2-component vector of float)
+0:84      hyp. cosine (global 2-component vector of float)
+0:84        'inF0' (temp 2-component vector of float)
+0:?       bitCount (global 2-component vector of uint)
+0:?         Constant:
+0:?           7 (const uint)
+0:?           3 (const uint)
+0:86      degrees (global 2-component vector of float)
 0:86        'inF0' (temp 2-component vector of float)
-0:87      face-forward (global 2-component vector of float)
+0:87      distance (global float)
 0:87        'inF0' (temp 2-component vector of float)
 0:87        'inF1' (temp 2-component vector of float)
-0:87        'inF2' (temp 2-component vector of float)
-0:88      findMSB (global int)
-0:88        Constant:
-0:88          7 (const int)
-0:89      findLSB (global int)
-0:89        Constant:
-0:89          7 (const int)
-0:90      Floor (global 2-component vector of float)
-0:90        'inF0' (temp 2-component vector of float)
-0:92      mod (global 2-component vector of float)
+0:88      dot-product (global float)
+0:88        'inF0' (temp 2-component vector of float)
+0:88        'inF1' (temp 2-component vector of float)
+0:92      exp (global 2-component vector of float)
 0:92        'inF0' (temp 2-component vector of float)
-0:92        'inF1' (temp 2-component vector of float)
-0:93      Fraction (global 2-component vector of float)
+0:93      exp2 (global 2-component vector of float)
 0:93        'inF0' (temp 2-component vector of float)
-0:94      frexp (global 2-component vector of float)
+0:94      face-forward (global 2-component vector of float)
 0:94        'inF0' (temp 2-component vector of float)
 0:94        'inF1' (temp 2-component vector of float)
-0:95      fwidth (global 2-component vector of float)
-0:95        'inF0' (temp 2-component vector of float)
-0:96      isinf (global 2-component vector of bool)
-0:96        'inF0' (temp 2-component vector of float)
-0:97      isnan (global 2-component vector of bool)
+0:94        'inF2' (temp 2-component vector of float)
+0:95      findMSB (global int)
+0:95        Constant:
+0:95          7 (const int)
+0:96      findLSB (global int)
+0:96        Constant:
+0:96          7 (const int)
+0:97      Floor (global 2-component vector of float)
 0:97        'inF0' (temp 2-component vector of float)
-0:98      ldexp (global 2-component vector of float)
-0:98        'inF0' (temp 2-component vector of float)
-0:98        'inF1' (temp 2-component vector of float)
-0:99      length (global float)
+0:99      mod (global 2-component vector of float)
 0:99        'inF0' (temp 2-component vector of float)
-0:100      log (global 2-component vector of float)
+0:99        'inF1' (temp 2-component vector of float)
+0:100      Fraction (global 2-component vector of float)
 0:100        'inF0' (temp 2-component vector of float)
-0:101      vector-scale (temp 2-component vector of float)
-0:101        log2 (temp 2-component vector of float)
-0:101          'inF0' (temp 2-component vector of float)
-0:101        Constant:
-0:101          0.301030
-0:102      log2 (global 2-component vector of float)
+0:101      frexp (global 2-component vector of float)
+0:101        'inF0' (temp 2-component vector of float)
+0:101        'inF1' (temp 2-component vector of float)
+0:102      isinf (global 2-component vector of bool)
 0:102        'inF0' (temp 2-component vector of float)
-0:103      max (global 2-component vector of float)
+0:103      isnan (global 2-component vector of bool)
 0:103        'inF0' (temp 2-component vector of float)
-0:103        'inF1' (temp 2-component vector of float)
-0:104      min (global 2-component vector of float)
+0:104      ldexp (global 2-component vector of float)
 0:104        'inF0' (temp 2-component vector of float)
 0:104        'inF1' (temp 2-component vector of float)
-0:106      normalize (global 2-component vector of float)
+0:105      length (global float)
+0:105        'inF0' (temp 2-component vector of float)
+0:106      log (global 2-component vector of float)
 0:106        'inF0' (temp 2-component vector of float)
-0:107      pow (global 2-component vector of float)
-0:107        'inF0' (temp 2-component vector of float)
-0:107        'inF1' (temp 2-component vector of float)
-0:108      radians (global 2-component vector of float)
+0:107      vector-scale (temp 2-component vector of float)
+0:107        log2 (temp 2-component vector of float)
+0:107          'inF0' (temp 2-component vector of float)
+0:107        Constant:
+0:107          0.301030
+0:108      log2 (global 2-component vector of float)
 0:108        'inF0' (temp 2-component vector of float)
-0:109      reflect (global 2-component vector of float)
+0:109      max (global 2-component vector of float)
 0:109        'inF0' (temp 2-component vector of float)
 0:109        'inF1' (temp 2-component vector of float)
-0:110      refract (global 2-component vector of float)
+0:110      min (global 2-component vector of float)
 0:110        'inF0' (temp 2-component vector of float)
 0:110        'inF1' (temp 2-component vector of float)
-0:110        Constant:
-0:110          2.000000
-0:?       bitFieldReverse (global 2-component vector of uint)
-0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:112      roundEven (global 2-component vector of float)
+0:112      normalize (global 2-component vector of float)
 0:112        'inF0' (temp 2-component vector of float)
-0:113      inverse sqrt (global 2-component vector of float)
+0:113      pow (global 2-component vector of float)
 0:113        'inF0' (temp 2-component vector of float)
-0:114      clamp (global 2-component vector of float)
+0:113        'inF1' (temp 2-component vector of float)
+0:114      radians (global 2-component vector of float)
 0:114        'inF0' (temp 2-component vector of float)
-0:114        Constant:
-0:114          0.000000
-0:114        Constant:
-0:114          1.000000
-0:115      Sign (global 2-component vector of float)
+0:115      reflect (global 2-component vector of float)
 0:115        'inF0' (temp 2-component vector of float)
-0:116      sine (global 2-component vector of float)
+0:115        'inF1' (temp 2-component vector of float)
+0:116      refract (global 2-component vector of float)
 0:116        'inF0' (temp 2-component vector of float)
-0:117      Sequence
-0:117        move second child to first child (temp 2-component vector of float)
-0:117          'inF1' (temp 2-component vector of float)
-0:117          sine (temp 2-component vector of float)
-0:117            'inF0' (temp 2-component vector of float)
-0:117        move second child to first child (temp 2-component vector of float)
-0:117          'inF2' (temp 2-component vector of float)
-0:117          cosine (temp 2-component vector of float)
-0:117            'inF0' (temp 2-component vector of float)
-0:118      hyp. sine (global 2-component vector of float)
+0:116        'inF1' (temp 2-component vector of float)
+0:116        Constant:
+0:116          2.000000
+0:?       bitFieldReverse (global 2-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:118      roundEven (global 2-component vector of float)
 0:118        'inF0' (temp 2-component vector of float)
-0:119      smoothstep (global 2-component vector of float)
+0:119      inverse sqrt (global 2-component vector of float)
 0:119        'inF0' (temp 2-component vector of float)
-0:119        'inF1' (temp 2-component vector of float)
-0:119        'inF2' (temp 2-component vector of float)
-0:120      sqrt (global 2-component vector of float)
+0:120      clamp (temp 2-component vector of float)
 0:120        'inF0' (temp 2-component vector of float)
-0:121      step (global 2-component vector of float)
+0:120        Constant:
+0:120          0.000000
+0:120        Constant:
+0:120          1.000000
+0:121      Sign (global 2-component vector of float)
 0:121        'inF0' (temp 2-component vector of float)
-0:121        'inF1' (temp 2-component vector of float)
-0:122      tangent (global 2-component vector of float)
+0:122      sine (global 2-component vector of float)
 0:122        'inF0' (temp 2-component vector of float)
-0:123      hyp. tangent (global 2-component vector of float)
-0:123        'inF0' (temp 2-component vector of float)
-0:125      trunc (global 2-component vector of float)
+0:123      Sequence
+0:123        move second child to first child (temp 2-component vector of float)
+0:123          'inF1' (temp 2-component vector of float)
+0:123          sine (temp 2-component vector of float)
+0:123            'inF0' (temp 2-component vector of float)
+0:123        move second child to first child (temp 2-component vector of float)
+0:123          'inF2' (temp 2-component vector of float)
+0:123          cosine (temp 2-component vector of float)
+0:123            'inF0' (temp 2-component vector of float)
+0:124      hyp. sine (global 2-component vector of float)
+0:124        'inF0' (temp 2-component vector of float)
+0:125      smoothstep (global 2-component vector of float)
 0:125        'inF0' (temp 2-component vector of float)
-0:128      Branch: Return with expression
+0:125        'inF1' (temp 2-component vector of float)
+0:125        'inF2' (temp 2-component vector of float)
+0:126      sqrt (global 2-component vector of float)
+0:126        'inF0' (temp 2-component vector of float)
+0:127      step (global 2-component vector of float)
+0:127        'inF0' (temp 2-component vector of float)
+0:127        'inF1' (temp 2-component vector of float)
+0:128      tangent (global 2-component vector of float)
+0:128        'inF0' (temp 2-component vector of float)
+0:129      hyp. tangent (global 2-component vector of float)
+0:129        'inF0' (temp 2-component vector of float)
+0:131      trunc (global 2-component vector of float)
+0:131        'inF0' (temp 2-component vector of float)
+0:134      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:198  Function Definition: VertexShaderFunction(vf3;vf3;vf3; (temp 3-component vector of float)
-0:132    Function Parameters: 
-0:132      'inF0' (temp 3-component vector of float)
-0:132      'inF1' (temp 3-component vector of float)
-0:132      'inF2' (temp 3-component vector of float)
+0:207  Function Definition: VertexShaderFunction(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
+0:138    Function Parameters: 
+0:138      'inF0' (temp 3-component vector of float)
+0:138      'inF1' (temp 3-component vector of float)
+0:138      'inF2' (temp 3-component vector of float)
+0:138      'inU0' (temp 3-component vector of uint)
+0:138      'inU1' (temp 3-component vector of uint)
 0:?     Sequence
-0:133      all (global bool)
-0:133        'inF0' (temp 3-component vector of float)
-0:134      Absolute value (global 3-component vector of float)
-0:134        'inF0' (temp 3-component vector of float)
-0:135      arc cosine (global 3-component vector of float)
-0:135        'inF0' (temp 3-component vector of float)
-0:136      any (global bool)
-0:136        'inF0' (temp 3-component vector of float)
-0:137      arc sine (global 3-component vector of float)
-0:137        'inF0' (temp 3-component vector of float)
-0:138      arc tangent (global 3-component vector of float)
-0:138        'inF0' (temp 3-component vector of float)
-0:139      arc tangent (global 3-component vector of float)
+0:139      all (global bool)
 0:139        'inF0' (temp 3-component vector of float)
-0:139        'inF1' (temp 3-component vector of float)
-0:140      Ceiling (global 3-component vector of float)
+0:140      Absolute value (global 3-component vector of float)
 0:140        'inF0' (temp 3-component vector of float)
-0:141      clamp (global 3-component vector of float)
+0:141      arc cosine (global 3-component vector of float)
 0:141        'inF0' (temp 3-component vector of float)
-0:141        'inF1' (temp 3-component vector of float)
-0:141        'inF2' (temp 3-component vector of float)
-0:142      cosine (global 3-component vector of float)
+0:142      any (global bool)
 0:142        'inF0' (temp 3-component vector of float)
-0:143      hyp. cosine (global 3-component vector of float)
+0:143      arc sine (global 3-component vector of float)
 0:143        'inF0' (temp 3-component vector of float)
+0:144      floatBitsToInt (global 3-component vector of int)
+0:144        'inF0' (temp 3-component vector of float)
+0:145      floatBitsToUint (global 3-component vector of uint)
+0:145        'inF0' (temp 3-component vector of float)
+0:146      intBitsToFloat (global 3-component vector of float)
+0:146        'inU0' (temp 3-component vector of uint)
+0:148      arc tangent (global 3-component vector of float)
+0:148        'inF0' (temp 3-component vector of float)
+0:149      arc tangent (global 3-component vector of float)
+0:149        'inF0' (temp 3-component vector of float)
+0:149        'inF1' (temp 3-component vector of float)
+0:150      Ceiling (global 3-component vector of float)
+0:150        'inF0' (temp 3-component vector of float)
+0:151      clamp (global 3-component vector of float)
+0:151        'inF0' (temp 3-component vector of float)
+0:151        'inF1' (temp 3-component vector of float)
+0:151        'inF2' (temp 3-component vector of float)
+0:152      cosine (global 3-component vector of float)
+0:152        'inF0' (temp 3-component vector of float)
+0:153      hyp. cosine (global 3-component vector of float)
+0:153        'inF0' (temp 3-component vector of float)
 0:?       bitCount (global 3-component vector of uint)
 0:?         Constant:
 0:?           7 (const uint)
 0:?           3 (const uint)
 0:?           5 (const uint)
-0:145      cross-product (global 3-component vector of float)
-0:145        'inF0' (temp 3-component vector of float)
-0:145        'inF1' (temp 3-component vector of float)
-0:146      degrees (global 3-component vector of float)
-0:146        'inF0' (temp 3-component vector of float)
-0:147      distance (global float)
-0:147        'inF0' (temp 3-component vector of float)
-0:147        'inF1' (temp 3-component vector of float)
-0:148      dot-product (global float)
-0:148        'inF0' (temp 3-component vector of float)
-0:148        'inF1' (temp 3-component vector of float)
-0:152      exp (global 3-component vector of float)
-0:152        'inF0' (temp 3-component vector of float)
-0:153      exp2 (global 3-component vector of float)
-0:153        'inF0' (temp 3-component vector of float)
-0:154      face-forward (global 3-component vector of float)
-0:154        'inF0' (temp 3-component vector of float)
-0:154        'inF1' (temp 3-component vector of float)
-0:154        'inF2' (temp 3-component vector of float)
-0:155      findMSB (global int)
-0:155        Constant:
-0:155          7 (const int)
-0:156      findLSB (global int)
-0:156        Constant:
-0:156          7 (const int)
-0:157      Floor (global 3-component vector of float)
+0:155      cross-product (global 3-component vector of float)
+0:155        'inF0' (temp 3-component vector of float)
+0:155        'inF1' (temp 3-component vector of float)
+0:156      degrees (global 3-component vector of float)
+0:156        'inF0' (temp 3-component vector of float)
+0:157      distance (global float)
 0:157        'inF0' (temp 3-component vector of float)
-0:159      mod (global 3-component vector of float)
-0:159        'inF0' (temp 3-component vector of float)
-0:159        'inF1' (temp 3-component vector of float)
-0:160      Fraction (global 3-component vector of float)
-0:160        'inF0' (temp 3-component vector of float)
-0:161      frexp (global 3-component vector of float)
-0:161        'inF0' (temp 3-component vector of float)
-0:161        'inF1' (temp 3-component vector of float)
-0:162      fwidth (global 3-component vector of float)
+0:157        'inF1' (temp 3-component vector of float)
+0:158      dot-product (global float)
+0:158        'inF0' (temp 3-component vector of float)
+0:158        'inF1' (temp 3-component vector of float)
+0:162      exp (global 3-component vector of float)
 0:162        'inF0' (temp 3-component vector of float)
-0:163      isinf (global 3-component vector of bool)
+0:163      exp2 (global 3-component vector of float)
 0:163        'inF0' (temp 3-component vector of float)
-0:164      isnan (global 3-component vector of bool)
+0:164      face-forward (global 3-component vector of float)
 0:164        'inF0' (temp 3-component vector of float)
-0:165      ldexp (global 3-component vector of float)
-0:165        'inF0' (temp 3-component vector of float)
-0:165        'inF1' (temp 3-component vector of float)
-0:166      length (global float)
-0:166        'inF0' (temp 3-component vector of float)
-0:167      log (global 3-component vector of float)
+0:164        'inF1' (temp 3-component vector of float)
+0:164        'inF2' (temp 3-component vector of float)
+0:165      findMSB (global int)
+0:165        Constant:
+0:165          7 (const int)
+0:166      findLSB (global int)
+0:166        Constant:
+0:166          7 (const int)
+0:167      Floor (global 3-component vector of float)
 0:167        'inF0' (temp 3-component vector of float)
-0:168      vector-scale (temp 3-component vector of float)
-0:168        log2 (temp 3-component vector of float)
-0:168          'inF0' (temp 3-component vector of float)
-0:168        Constant:
-0:168          0.301030
-0:169      log2 (global 3-component vector of float)
+0:169      mod (global 3-component vector of float)
 0:169        'inF0' (temp 3-component vector of float)
-0:170      max (global 3-component vector of float)
+0:169        'inF1' (temp 3-component vector of float)
+0:170      Fraction (global 3-component vector of float)
 0:170        'inF0' (temp 3-component vector of float)
-0:170        'inF1' (temp 3-component vector of float)
-0:171      min (global 3-component vector of float)
+0:171      frexp (global 3-component vector of float)
 0:171        'inF0' (temp 3-component vector of float)
 0:171        'inF1' (temp 3-component vector of float)
-0:173      normalize (global 3-component vector of float)
+0:172      isinf (global 3-component vector of bool)
+0:172        'inF0' (temp 3-component vector of float)
+0:173      isnan (global 3-component vector of bool)
 0:173        'inF0' (temp 3-component vector of float)
-0:174      pow (global 3-component vector of float)
+0:174      ldexp (global 3-component vector of float)
 0:174        'inF0' (temp 3-component vector of float)
 0:174        'inF1' (temp 3-component vector of float)
-0:175      radians (global 3-component vector of float)
+0:175      length (global float)
 0:175        'inF0' (temp 3-component vector of float)
-0:176      reflect (global 3-component vector of float)
+0:176      log (global 3-component vector of float)
 0:176        'inF0' (temp 3-component vector of float)
-0:176        'inF1' (temp 3-component vector of float)
-0:177      refract (global 3-component vector of float)
-0:177        'inF0' (temp 3-component vector of float)
-0:177        'inF1' (temp 3-component vector of float)
+0:177      vector-scale (temp 3-component vector of float)
+0:177        log2 (temp 3-component vector of float)
+0:177          'inF0' (temp 3-component vector of float)
 0:177        Constant:
-0:177          2.000000
-0:?       bitFieldReverse (global 3-component vector of uint)
-0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:?           3 (const uint)
-0:179      roundEven (global 3-component vector of float)
+0:177          0.301030
+0:178      log2 (global 3-component vector of float)
+0:178        'inF0' (temp 3-component vector of float)
+0:179      max (global 3-component vector of float)
 0:179        'inF0' (temp 3-component vector of float)
-0:180      inverse sqrt (global 3-component vector of float)
+0:179        'inF1' (temp 3-component vector of float)
+0:180      min (global 3-component vector of float)
 0:180        'inF0' (temp 3-component vector of float)
-0:181      clamp (global 3-component vector of float)
-0:181        'inF0' (temp 3-component vector of float)
-0:181        Constant:
-0:181          0.000000
-0:181        Constant:
-0:181          1.000000
-0:182      Sign (global 3-component vector of float)
+0:180        'inF1' (temp 3-component vector of float)
+0:182      normalize (global 3-component vector of float)
 0:182        'inF0' (temp 3-component vector of float)
-0:183      sine (global 3-component vector of float)
+0:183      pow (global 3-component vector of float)
 0:183        'inF0' (temp 3-component vector of float)
-0:184      Sequence
-0:184        move second child to first child (temp 3-component vector of float)
-0:184          'inF1' (temp 3-component vector of float)
-0:184          sine (temp 3-component vector of float)
-0:184            'inF0' (temp 3-component vector of float)
-0:184        move second child to first child (temp 3-component vector of float)
-0:184          'inF2' (temp 3-component vector of float)
-0:184          cosine (temp 3-component vector of float)
-0:184            'inF0' (temp 3-component vector of float)
-0:185      hyp. sine (global 3-component vector of float)
+0:183        'inF1' (temp 3-component vector of float)
+0:184      radians (global 3-component vector of float)
+0:184        'inF0' (temp 3-component vector of float)
+0:185      reflect (global 3-component vector of float)
 0:185        'inF0' (temp 3-component vector of float)
-0:186      smoothstep (global 3-component vector of float)
+0:185        'inF1' (temp 3-component vector of float)
+0:186      refract (global 3-component vector of float)
 0:186        'inF0' (temp 3-component vector of float)
 0:186        'inF1' (temp 3-component vector of float)
-0:186        'inF2' (temp 3-component vector of float)
-0:187      sqrt (global 3-component vector of float)
-0:187        'inF0' (temp 3-component vector of float)
-0:188      step (global 3-component vector of float)
+0:186        Constant:
+0:186          2.000000
+0:?       bitFieldReverse (global 3-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:?           3 (const uint)
+0:188      roundEven (global 3-component vector of float)
 0:188        'inF0' (temp 3-component vector of float)
-0:188        'inF1' (temp 3-component vector of float)
-0:189      tangent (global 3-component vector of float)
+0:189      inverse sqrt (global 3-component vector of float)
 0:189        'inF0' (temp 3-component vector of float)
-0:190      hyp. tangent (global 3-component vector of float)
+0:190      clamp (temp 3-component vector of float)
 0:190        'inF0' (temp 3-component vector of float)
-0:192      trunc (global 3-component vector of float)
+0:190        Constant:
+0:190          0.000000
+0:190        Constant:
+0:190          1.000000
+0:191      Sign (global 3-component vector of float)
+0:191        'inF0' (temp 3-component vector of float)
+0:192      sine (global 3-component vector of float)
 0:192        'inF0' (temp 3-component vector of float)
-0:195      Branch: Return with expression
+0:193      Sequence
+0:193        move second child to first child (temp 3-component vector of float)
+0:193          'inF1' (temp 3-component vector of float)
+0:193          sine (temp 3-component vector of float)
+0:193            'inF0' (temp 3-component vector of float)
+0:193        move second child to first child (temp 3-component vector of float)
+0:193          'inF2' (temp 3-component vector of float)
+0:193          cosine (temp 3-component vector of float)
+0:193            'inF0' (temp 3-component vector of float)
+0:194      hyp. sine (global 3-component vector of float)
+0:194        'inF0' (temp 3-component vector of float)
+0:195      smoothstep (global 3-component vector of float)
+0:195        'inF0' (temp 3-component vector of float)
+0:195        'inF1' (temp 3-component vector of float)
+0:195        'inF2' (temp 3-component vector of float)
+0:196      sqrt (global 3-component vector of float)
+0:196        'inF0' (temp 3-component vector of float)
+0:197      step (global 3-component vector of float)
+0:197        'inF0' (temp 3-component vector of float)
+0:197        'inF1' (temp 3-component vector of float)
+0:198      tangent (global 3-component vector of float)
+0:198        'inF0' (temp 3-component vector of float)
+0:199      hyp. tangent (global 3-component vector of float)
+0:199        'inF0' (temp 3-component vector of float)
+0:201      trunc (global 3-component vector of float)
+0:201        'inF0' (temp 3-component vector of float)
+0:204      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:314  Function Definition: VertexShaderFunction(vf4;vf4;vf4; (temp 4-component vector of float)
-0:199    Function Parameters: 
-0:199      'inF0' (temp 4-component vector of float)
-0:199      'inF1' (temp 4-component vector of float)
-0:199      'inF2' (temp 4-component vector of float)
+0:330  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
+0:208    Function Parameters: 
+0:208      'inF0' (temp 4-component vector of float)
+0:208      'inF1' (temp 4-component vector of float)
+0:208      'inF2' (temp 4-component vector of float)
+0:208      'inU0' (temp 4-component vector of uint)
+0:208      'inU1' (temp 4-component vector of uint)
 0:?     Sequence
-0:200      all (global bool)
-0:200        'inF0' (temp 4-component vector of float)
-0:201      Absolute value (global 4-component vector of float)
-0:201        'inF0' (temp 4-component vector of float)
-0:202      arc cosine (global 4-component vector of float)
-0:202        'inF0' (temp 4-component vector of float)
-0:203      any (global bool)
-0:203        'inF0' (temp 4-component vector of float)
-0:204      arc sine (global 4-component vector of float)
-0:204        'inF0' (temp 4-component vector of float)
-0:205      arc tangent (global 4-component vector of float)
-0:205        'inF0' (temp 4-component vector of float)
-0:206      arc tangent (global 4-component vector of float)
-0:206        'inF0' (temp 4-component vector of float)
-0:206        'inF1' (temp 4-component vector of float)
-0:207      Ceiling (global 4-component vector of float)
-0:207        'inF0' (temp 4-component vector of float)
-0:208      clamp (global 4-component vector of float)
-0:208        'inF0' (temp 4-component vector of float)
-0:208        'inF1' (temp 4-component vector of float)
-0:208        'inF2' (temp 4-component vector of float)
-0:209      cosine (global 4-component vector of float)
+0:209      all (global bool)
 0:209        'inF0' (temp 4-component vector of float)
-0:210      hyp. cosine (global 4-component vector of float)
+0:210      Absolute value (global 4-component vector of float)
 0:210        'inF0' (temp 4-component vector of float)
-0:?       bitCount (global 4-component vector of uint)
-0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:?           5 (const uint)
-0:?           2 (const uint)
-0:212      degrees (global 4-component vector of float)
+0:211      arc cosine (global 4-component vector of float)
+0:211        'inF0' (temp 4-component vector of float)
+0:212      any (global bool)
 0:212        'inF0' (temp 4-component vector of float)
-0:213      distance (global float)
+0:213      arc sine (global 4-component vector of float)
 0:213        'inF0' (temp 4-component vector of float)
-0:213        'inF1' (temp 4-component vector of float)
-0:214      dot-product (global float)
+0:214      floatBitsToInt (global 4-component vector of int)
 0:214        'inF0' (temp 4-component vector of float)
-0:214        'inF1' (temp 4-component vector of float)
-0:215      Construct vec4 (temp float)
-0:215        Constant:
-0:215          1.000000
-0:215        component-wise multiply (temp float)
-0:215          direct index (temp float)
-0:215            'inF0' (temp 4-component vector of float)
-0:215            Constant:
-0:215              1 (const int)
-0:215          direct index (temp float)
-0:215            'inF1' (temp 4-component vector of float)
-0:215            Constant:
-0:215              1 (const int)
-0:215        direct index (temp float)
-0:215          'inF0' (temp 4-component vector of float)
-0:215          Constant:
-0:215            2 (const int)
-0:215        direct index (temp float)
-0:215          'inF1' (temp 4-component vector of float)
-0:215          Constant:
-0:215            3 (const int)
-0:219      exp (global 4-component vector of float)
+0:215      floatBitsToUint (global 4-component vector of uint)
+0:215        'inF0' (temp 4-component vector of float)
+0:216      intBitsToFloat (global 4-component vector of float)
+0:216        'inU0' (temp 4-component vector of uint)
+0:218      arc tangent (global 4-component vector of float)
+0:218        'inF0' (temp 4-component vector of float)
+0:219      arc tangent (global 4-component vector of float)
 0:219        'inF0' (temp 4-component vector of float)
-0:220      exp2 (global 4-component vector of float)
+0:219        'inF1' (temp 4-component vector of float)
+0:220      Ceiling (global 4-component vector of float)
 0:220        'inF0' (temp 4-component vector of float)
-0:221      face-forward (global 4-component vector of float)
+0:221      clamp (global 4-component vector of float)
 0:221        'inF0' (temp 4-component vector of float)
 0:221        'inF1' (temp 4-component vector of float)
 0:221        'inF2' (temp 4-component vector of float)
-0:222      findMSB (global int)
-0:222        Constant:
-0:222          7 (const int)
-0:223      findLSB (global int)
-0:223        Constant:
-0:223          7 (const int)
-0:224      Floor (global 4-component vector of float)
-0:224        'inF0' (temp 4-component vector of float)
-0:226      mod (global 4-component vector of float)
+0:222      cosine (global 4-component vector of float)
+0:222        'inF0' (temp 4-component vector of float)
+0:223      hyp. cosine (global 4-component vector of float)
+0:223        'inF0' (temp 4-component vector of float)
+0:?       bitCount (global 4-component vector of uint)
+0:?         Constant:
+0:?           7 (const uint)
+0:?           3 (const uint)
+0:?           5 (const uint)
+0:?           2 (const uint)
+0:225      degrees (global 4-component vector of float)
+0:225        'inF0' (temp 4-component vector of float)
+0:226      distance (global float)
 0:226        'inF0' (temp 4-component vector of float)
 0:226        'inF1' (temp 4-component vector of float)
-0:227      Fraction (global 4-component vector of float)
+0:227      dot-product (global float)
 0:227        'inF0' (temp 4-component vector of float)
-0:228      frexp (global 4-component vector of float)
-0:228        'inF0' (temp 4-component vector of float)
-0:228        'inF1' (temp 4-component vector of float)
-0:229      fwidth (global 4-component vector of float)
-0:229        'inF0' (temp 4-component vector of float)
-0:230      isinf (global 4-component vector of bool)
-0:230        'inF0' (temp 4-component vector of float)
-0:231      isnan (global 4-component vector of bool)
-0:231        'inF0' (temp 4-component vector of float)
-0:232      ldexp (global 4-component vector of float)
+0:227        'inF1' (temp 4-component vector of float)
+0:228      Construct vec4 (temp float)
+0:228        Constant:
+0:228          1.000000
+0:228        component-wise multiply (temp float)
+0:228          direct index (temp float)
+0:228            'inF0' (temp 4-component vector of float)
+0:228            Constant:
+0:228              1 (const int)
+0:228          direct index (temp float)
+0:228            'inF1' (temp 4-component vector of float)
+0:228            Constant:
+0:228              1 (const int)
+0:228        direct index (temp float)
+0:228          'inF0' (temp 4-component vector of float)
+0:228          Constant:
+0:228            2 (const int)
+0:228        direct index (temp float)
+0:228          'inF1' (temp 4-component vector of float)
+0:228          Constant:
+0:228            3 (const int)
+0:232      exp (global 4-component vector of float)
 0:232        'inF0' (temp 4-component vector of float)
-0:232        'inF1' (temp 4-component vector of float)
-0:233      length (global float)
+0:233      exp2 (global 4-component vector of float)
 0:233        'inF0' (temp 4-component vector of float)
-0:234      log (global 4-component vector of float)
+0:234      face-forward (global 4-component vector of float)
 0:234        'inF0' (temp 4-component vector of float)
-0:235      vector-scale (temp 4-component vector of float)
-0:235        log2 (temp 4-component vector of float)
-0:235          'inF0' (temp 4-component vector of float)
+0:234        'inF1' (temp 4-component vector of float)
+0:234        'inF2' (temp 4-component vector of float)
+0:235      findMSB (global int)
 0:235        Constant:
-0:235          0.301030
-0:236      log2 (global 4-component vector of float)
-0:236        'inF0' (temp 4-component vector of float)
-0:237      max (global 4-component vector of float)
+0:235          7 (const int)
+0:236      findLSB (global int)
+0:236        Constant:
+0:236          7 (const int)
+0:237      Floor (global 4-component vector of float)
 0:237        'inF0' (temp 4-component vector of float)
-0:237        'inF1' (temp 4-component vector of float)
-0:238      min (global 4-component vector of float)
-0:238        'inF0' (temp 4-component vector of float)
-0:238        'inF1' (temp 4-component vector of float)
-0:240      normalize (global 4-component vector of float)
+0:239      mod (global 4-component vector of float)
+0:239        'inF0' (temp 4-component vector of float)
+0:239        'inF1' (temp 4-component vector of float)
+0:240      Fraction (global 4-component vector of float)
 0:240        'inF0' (temp 4-component vector of float)
-0:241      pow (global 4-component vector of float)
+0:241      frexp (global 4-component vector of float)
 0:241        'inF0' (temp 4-component vector of float)
 0:241        'inF1' (temp 4-component vector of float)
-0:242      radians (global 4-component vector of float)
+0:242      isinf (global 4-component vector of bool)
 0:242        'inF0' (temp 4-component vector of float)
-0:243      reflect (global 4-component vector of float)
+0:243      isnan (global 4-component vector of bool)
 0:243        'inF0' (temp 4-component vector of float)
-0:243        'inF1' (temp 4-component vector of float)
-0:244      refract (global 4-component vector of float)
+0:244      ldexp (global 4-component vector of float)
 0:244        'inF0' (temp 4-component vector of float)
 0:244        'inF1' (temp 4-component vector of float)
-0:244        Constant:
-0:244          2.000000
-0:?       bitFieldReverse (global 4-component vector of uint)
-0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:?           3 (const uint)
-0:?           4 (const uint)
-0:246      roundEven (global 4-component vector of float)
+0:245      length (global float)
+0:245        'inF0' (temp 4-component vector of float)
+0:246      log (global 4-component vector of float)
 0:246        'inF0' (temp 4-component vector of float)
-0:247      inverse sqrt (global 4-component vector of float)
-0:247        'inF0' (temp 4-component vector of float)
-0:248      clamp (global 4-component vector of float)
+0:247      vector-scale (temp 4-component vector of float)
+0:247        log2 (temp 4-component vector of float)
+0:247          'inF0' (temp 4-component vector of float)
+0:247        Constant:
+0:247          0.301030
+0:248      log2 (global 4-component vector of float)
 0:248        'inF0' (temp 4-component vector of float)
-0:248        Constant:
-0:248          0.000000
-0:248        Constant:
-0:248          1.000000
-0:249      Sign (global 4-component vector of float)
+0:249      max (global 4-component vector of float)
 0:249        'inF0' (temp 4-component vector of float)
-0:250      sine (global 4-component vector of float)
+0:249        'inF1' (temp 4-component vector of float)
+0:250      min (global 4-component vector of float)
 0:250        'inF0' (temp 4-component vector of float)
-0:251      Sequence
-0:251        move second child to first child (temp 4-component vector of float)
-0:251          'inF1' (temp 4-component vector of float)
-0:251          sine (temp 4-component vector of float)
-0:251            'inF0' (temp 4-component vector of float)
-0:251        move second child to first child (temp 4-component vector of float)
-0:251          'inF2' (temp 4-component vector of float)
-0:251          cosine (temp 4-component vector of float)
-0:251            'inF0' (temp 4-component vector of float)
-0:252      hyp. sine (global 4-component vector of float)
+0:250        'inF1' (temp 4-component vector of float)
+0:252      normalize (global 4-component vector of float)
 0:252        'inF0' (temp 4-component vector of float)
-0:253      smoothstep (global 4-component vector of float)
+0:253      pow (global 4-component vector of float)
 0:253        'inF0' (temp 4-component vector of float)
 0:253        'inF1' (temp 4-component vector of float)
-0:253        'inF2' (temp 4-component vector of float)
-0:254      sqrt (global 4-component vector of float)
+0:254      radians (global 4-component vector of float)
 0:254        'inF0' (temp 4-component vector of float)
-0:255      step (global 4-component vector of float)
+0:255      reflect (global 4-component vector of float)
 0:255        'inF0' (temp 4-component vector of float)
 0:255        'inF1' (temp 4-component vector of float)
-0:256      tangent (global 4-component vector of float)
+0:256      refract (global 4-component vector of float)
 0:256        'inF0' (temp 4-component vector of float)
-0:257      hyp. tangent (global 4-component vector of float)
-0:257        'inF0' (temp 4-component vector of float)
-0:259      trunc (global 4-component vector of float)
+0:256        'inF1' (temp 4-component vector of float)
+0:256        Constant:
+0:256          2.000000
+0:?       bitFieldReverse (global 4-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:?           3 (const uint)
+0:?           4 (const uint)
+0:258      roundEven (global 4-component vector of float)
+0:258        'inF0' (temp 4-component vector of float)
+0:259      inverse sqrt (global 4-component vector of float)
 0:259        'inF0' (temp 4-component vector of float)
-0:262      Branch: Return with expression
+0:260      clamp (temp 4-component vector of float)
+0:260        'inF0' (temp 4-component vector of float)
+0:260        Constant:
+0:260          0.000000
+0:260        Constant:
+0:260          1.000000
+0:261      Sign (global 4-component vector of float)
+0:261        'inF0' (temp 4-component vector of float)
+0:262      sine (global 4-component vector of float)
+0:262        'inF0' (temp 4-component vector of float)
+0:263      Sequence
+0:263        move second child to first child (temp 4-component vector of float)
+0:263          'inF1' (temp 4-component vector of float)
+0:263          sine (temp 4-component vector of float)
+0:263            'inF0' (temp 4-component vector of float)
+0:263        move second child to first child (temp 4-component vector of float)
+0:263          'inF2' (temp 4-component vector of float)
+0:263          cosine (temp 4-component vector of float)
+0:263            'inF0' (temp 4-component vector of float)
+0:264      hyp. sine (global 4-component vector of float)
+0:264        'inF0' (temp 4-component vector of float)
+0:265      smoothstep (global 4-component vector of float)
+0:265        'inF0' (temp 4-component vector of float)
+0:265        'inF1' (temp 4-component vector of float)
+0:265        'inF2' (temp 4-component vector of float)
+0:266      sqrt (global 4-component vector of float)
+0:266        'inF0' (temp 4-component vector of float)
+0:267      step (global 4-component vector of float)
+0:267        'inF0' (temp 4-component vector of float)
+0:267        'inF1' (temp 4-component vector of float)
+0:268      tangent (global 4-component vector of float)
+0:268        'inF0' (temp 4-component vector of float)
+0:269      hyp. tangent (global 4-component vector of float)
+0:269        'inF0' (temp 4-component vector of float)
+0:271      trunc (global 4-component vector of float)
+0:271        'inF0' (temp 4-component vector of float)
+0:274      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:323  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
-0:315    Function Parameters: 
-0:315      'inF0' (temp 2X2 matrix of float)
-0:315      'inF1' (temp 2X2 matrix of float)
-0:315      'inF2' (temp 2X2 matrix of float)
+0:339  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
+0:331    Function Parameters: 
+0:331      'inF0' (temp 2X2 matrix of float)
+0:331      'inF1' (temp 2X2 matrix of float)
+0:331      'inF2' (temp 2X2 matrix of float)
 0:?     Sequence
-0:317      all (global bool)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      Absolute value (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      arc cosine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      any (global bool)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      arc sine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      arc tangent (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      arc tangent (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      Ceiling (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      clamp (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317        'inF2' (temp 2X2 matrix of float)
-0:317      cosine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      hyp. cosine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      degrees (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      determinant (global float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      exp (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      exp2 (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      findMSB (global int)
-0:317        Constant:
-0:317          7 (const int)
-0:317      findLSB (global int)
-0:317        Constant:
-0:317          7 (const int)
-0:317      Floor (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      mod (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      Fraction (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      frexp (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      fwidth (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      ldexp (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      log (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      matrix-scale (temp 2X2 matrix of float)
-0:317        log2 (temp 2X2 matrix of float)
-0:317          'inF0' (temp 2X2 matrix of float)
-0:317        Constant:
-0:317          0.301030
-0:317      log2 (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      max (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      min (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      pow (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      radians (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      roundEven (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      inverse sqrt (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      clamp (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        Constant:
-0:317          0.000000
-0:317        Constant:
-0:317          1.000000
-0:317      Sign (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      sine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      Sequence
-0:317        move second child to first child (temp 2X2 matrix of float)
-0:317          'inF1' (temp 2X2 matrix of float)
-0:317          sine (temp 2X2 matrix of float)
-0:317            'inF0' (temp 2X2 matrix of float)
-0:317        move second child to first child (temp 2X2 matrix of float)
-0:317          'inF2' (temp 2X2 matrix of float)
-0:317          cosine (temp 2X2 matrix of float)
-0:317            'inF0' (temp 2X2 matrix of float)
-0:317      hyp. sine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      smoothstep (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317        'inF2' (temp 2X2 matrix of float)
-0:317      sqrt (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      step (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      tangent (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      hyp. tangent (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      transpose (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      trunc (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:320      Branch: Return with expression
+0:333      all (global bool)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      Absolute value (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      arc cosine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      any (global bool)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      arc sine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      arc tangent (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      arc tangent (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      Ceiling (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      clamp (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333        'inF2' (temp 2X2 matrix of float)
+0:333      cosine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      hyp. cosine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      degrees (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      determinant (global float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      exp (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      exp2 (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      findMSB (global int)
+0:333        Constant:
+0:333          7 (const int)
+0:333      findLSB (global int)
+0:333        Constant:
+0:333          7 (const int)
+0:333      Floor (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      mod (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      Fraction (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      frexp (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      ldexp (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      log (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      matrix-scale (temp 2X2 matrix of float)
+0:333        log2 (temp 2X2 matrix of float)
+0:333          'inF0' (temp 2X2 matrix of float)
+0:333        Constant:
+0:333          0.301030
+0:333      log2 (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      max (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      min (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      pow (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      radians (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      roundEven (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      inverse sqrt (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      clamp (temp 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        Constant:
+0:333          0.000000
+0:333        Constant:
+0:333          1.000000
+0:333      Sign (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      sine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      Sequence
+0:333        move second child to first child (temp 2X2 matrix of float)
+0:333          'inF1' (temp 2X2 matrix of float)
+0:333          sine (temp 2X2 matrix of float)
+0:333            'inF0' (temp 2X2 matrix of float)
+0:333        move second child to first child (temp 2X2 matrix of float)
+0:333          'inF2' (temp 2X2 matrix of float)
+0:333          cosine (temp 2X2 matrix of float)
+0:333            'inF0' (temp 2X2 matrix of float)
+0:333      hyp. sine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      smoothstep (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333        'inF2' (temp 2X2 matrix of float)
+0:333      sqrt (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      step (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      tangent (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      hyp. tangent (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      transpose (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      trunc (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:336      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:332  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
-0:324    Function Parameters: 
-0:324      'inF0' (temp 3X3 matrix of float)
-0:324      'inF1' (temp 3X3 matrix of float)
-0:324      'inF2' (temp 3X3 matrix of float)
+0:348  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
+0:340    Function Parameters: 
+0:340      'inF0' (temp 3X3 matrix of float)
+0:340      'inF1' (temp 3X3 matrix of float)
+0:340      'inF2' (temp 3X3 matrix of float)
 0:?     Sequence
-0:326      all (global bool)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      Absolute value (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      arc cosine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      any (global bool)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      arc sine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      arc tangent (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      arc tangent (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      Ceiling (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      clamp (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326        'inF2' (temp 3X3 matrix of float)
-0:326      cosine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      hyp. cosine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      degrees (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      determinant (global float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      exp (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      exp2 (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      findMSB (global int)
-0:326        Constant:
-0:326          7 (const int)
-0:326      findLSB (global int)
-0:326        Constant:
-0:326          7 (const int)
-0:326      Floor (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      mod (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      Fraction (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      frexp (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      fwidth (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      ldexp (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      log (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      matrix-scale (temp 3X3 matrix of float)
-0:326        log2 (temp 3X3 matrix of float)
-0:326          'inF0' (temp 3X3 matrix of float)
-0:326        Constant:
-0:326          0.301030
-0:326      log2 (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      max (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      min (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      pow (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      radians (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      roundEven (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      inverse sqrt (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      clamp (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        Constant:
-0:326          0.000000
-0:326        Constant:
-0:326          1.000000
-0:326      Sign (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      sine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      Sequence
-0:326        move second child to first child (temp 3X3 matrix of float)
-0:326          'inF1' (temp 3X3 matrix of float)
-0:326          sine (temp 3X3 matrix of float)
-0:326            'inF0' (temp 3X3 matrix of float)
-0:326        move second child to first child (temp 3X3 matrix of float)
-0:326          'inF2' (temp 3X3 matrix of float)
-0:326          cosine (temp 3X3 matrix of float)
-0:326            'inF0' (temp 3X3 matrix of float)
-0:326      hyp. sine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      smoothstep (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326        'inF2' (temp 3X3 matrix of float)
-0:326      sqrt (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      step (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      tangent (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      hyp. tangent (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      transpose (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      trunc (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:329      Branch: Return with expression
+0:342      all (global bool)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      Absolute value (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      arc cosine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      any (global bool)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      arc sine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      arc tangent (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      arc tangent (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      Ceiling (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      clamp (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342        'inF2' (temp 3X3 matrix of float)
+0:342      cosine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      hyp. cosine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      degrees (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      determinant (global float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      exp (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      exp2 (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      findMSB (global int)
+0:342        Constant:
+0:342          7 (const int)
+0:342      findLSB (global int)
+0:342        Constant:
+0:342          7 (const int)
+0:342      Floor (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      mod (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      Fraction (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      frexp (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      ldexp (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      log (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      matrix-scale (temp 3X3 matrix of float)
+0:342        log2 (temp 3X3 matrix of float)
+0:342          'inF0' (temp 3X3 matrix of float)
+0:342        Constant:
+0:342          0.301030
+0:342      log2 (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      max (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      min (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      pow (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      radians (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      roundEven (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      inverse sqrt (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      clamp (temp 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        Constant:
+0:342          0.000000
+0:342        Constant:
+0:342          1.000000
+0:342      Sign (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      sine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      Sequence
+0:342        move second child to first child (temp 3X3 matrix of float)
+0:342          'inF1' (temp 3X3 matrix of float)
+0:342          sine (temp 3X3 matrix of float)
+0:342            'inF0' (temp 3X3 matrix of float)
+0:342        move second child to first child (temp 3X3 matrix of float)
+0:342          'inF2' (temp 3X3 matrix of float)
+0:342          cosine (temp 3X3 matrix of float)
+0:342            'inF0' (temp 3X3 matrix of float)
+0:342      hyp. sine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      smoothstep (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342        'inF2' (temp 3X3 matrix of float)
+0:342      sqrt (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      step (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      tangent (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      hyp. tangent (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      transpose (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      trunc (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:345      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -902,129 +922,127 @@ Shader version: 450
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:353  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
-0:333    Function Parameters: 
-0:333      'inF0' (temp 4X4 matrix of float)
-0:333      'inF1' (temp 4X4 matrix of float)
-0:333      'inF2' (temp 4X4 matrix of float)
+0:369  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
+0:349    Function Parameters: 
+0:349      'inF0' (temp 4X4 matrix of float)
+0:349      'inF1' (temp 4X4 matrix of float)
+0:349      'inF2' (temp 4X4 matrix of float)
 0:?     Sequence
-0:335      all (global bool)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      Absolute value (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      arc cosine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      any (global bool)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      arc sine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      arc tangent (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      arc tangent (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      Ceiling (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      clamp (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335        'inF2' (temp 4X4 matrix of float)
-0:335      cosine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      hyp. cosine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      degrees (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      determinant (global float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      exp (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      exp2 (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      findMSB (global int)
-0:335        Constant:
-0:335          7 (const int)
-0:335      findLSB (global int)
-0:335        Constant:
-0:335          7 (const int)
-0:335      Floor (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      mod (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      Fraction (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      frexp (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      fwidth (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      ldexp (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      log (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      matrix-scale (temp 4X4 matrix of float)
-0:335        log2 (temp 4X4 matrix of float)
-0:335          'inF0' (temp 4X4 matrix of float)
-0:335        Constant:
-0:335          0.301030
-0:335      log2 (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      max (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      min (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      pow (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      radians (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      roundEven (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      inverse sqrt (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      clamp (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        Constant:
-0:335          0.000000
-0:335        Constant:
-0:335          1.000000
-0:335      Sign (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      sine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      Sequence
-0:335        move second child to first child (temp 4X4 matrix of float)
-0:335          'inF1' (temp 4X4 matrix of float)
-0:335          sine (temp 4X4 matrix of float)
-0:335            'inF0' (temp 4X4 matrix of float)
-0:335        move second child to first child (temp 4X4 matrix of float)
-0:335          'inF2' (temp 4X4 matrix of float)
-0:335          cosine (temp 4X4 matrix of float)
-0:335            'inF0' (temp 4X4 matrix of float)
-0:335      hyp. sine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      smoothstep (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335        'inF2' (temp 4X4 matrix of float)
-0:335      sqrt (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      step (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      tangent (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      hyp. tangent (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      transpose (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      trunc (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:338      Branch: Return with expression
+0:351      all (global bool)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      Absolute value (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      arc cosine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      any (global bool)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      arc sine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      arc tangent (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      arc tangent (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      Ceiling (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      clamp (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351        'inF2' (temp 4X4 matrix of float)
+0:351      cosine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      hyp. cosine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      degrees (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      determinant (global float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      exp (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      exp2 (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      findMSB (global int)
+0:351        Constant:
+0:351          7 (const int)
+0:351      findLSB (global int)
+0:351        Constant:
+0:351          7 (const int)
+0:351      Floor (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      mod (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      Fraction (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      frexp (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      ldexp (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      log (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      matrix-scale (temp 4X4 matrix of float)
+0:351        log2 (temp 4X4 matrix of float)
+0:351          'inF0' (temp 4X4 matrix of float)
+0:351        Constant:
+0:351          0.301030
+0:351      log2 (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      max (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      min (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      pow (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      radians (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      roundEven (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      inverse sqrt (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      clamp (temp 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        Constant:
+0:351          0.000000
+0:351        Constant:
+0:351          1.000000
+0:351      Sign (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      sine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      Sequence
+0:351        move second child to first child (temp 4X4 matrix of float)
+0:351          'inF1' (temp 4X4 matrix of float)
+0:351          sine (temp 4X4 matrix of float)
+0:351            'inF0' (temp 4X4 matrix of float)
+0:351        move second child to first child (temp 4X4 matrix of float)
+0:351          'inF2' (temp 4X4 matrix of float)
+0:351          cosine (temp 4X4 matrix of float)
+0:351            'inF0' (temp 4X4 matrix of float)
+0:351      hyp. sine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      smoothstep (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351        'inF2' (temp 4X4 matrix of float)
+0:351      sqrt (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      step (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      tangent (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      hyp. tangent (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      transpose (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      trunc (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:354      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
@@ -1042,168 +1060,168 @@ Shader version: 450
 0:?           4.000000
 0:?           4.000000
 0:?           4.000000
-0:360  Function Definition: TestGenMul(f1;f1;vf2;vf2;mf22;mf22; (temp void)
-0:356    Function Parameters: 
-0:356      'inF0' (temp float)
-0:356      'inF1' (temp float)
-0:356      'inFV0' (temp 2-component vector of float)
-0:356      'inFV1' (temp 2-component vector of float)
-0:356      'inFM0' (temp 2X2 matrix of float)
-0:356      'inFM1' (temp 2X2 matrix of float)
+0:376  Function Definition: TestGenMul(f1;f1;vf2;vf2;mf22;mf22; (temp void)
+0:372    Function Parameters: 
+0:372      'inF0' (temp float)
+0:372      'inF1' (temp float)
+0:372      'inFV0' (temp 2-component vector of float)
+0:372      'inFV1' (temp 2-component vector of float)
+0:372      'inFM0' (temp 2X2 matrix of float)
+0:372      'inFM1' (temp 2X2 matrix of float)
 0:?     Sequence
-0:357      move second child to first child (temp float)
-0:357        'r0' (temp float)
-0:357        component-wise multiply (temp float)
-0:357          'inF0' (temp float)
-0:357          'inF1' (temp float)
-0:357      move second child to first child (temp 2-component vector of float)
-0:357        'r1' (temp 2-component vector of float)
-0:357        vector-scale (temp 2-component vector of float)
-0:357          'inFV0' (temp 2-component vector of float)
-0:357          'inF0' (temp float)
-0:357      move second child to first child (temp 2-component vector of float)
-0:357        'r2' (temp 2-component vector of float)
-0:357        vector-scale (temp 2-component vector of float)
-0:357          'inF0' (temp float)
-0:357          'inFV0' (temp 2-component vector of float)
-0:357      move second child to first child (temp float)
-0:357        'r3' (temp float)
-0:357        dot-product (global float)
-0:357          'inFV0' (temp 2-component vector of float)
-0:357          'inFV1' (temp 2-component vector of float)
-0:357      move second child to first child (temp 2-component vector of float)
-0:357        'r4' (temp 2-component vector of float)
-0:357        matrix-times-vector (temp 2-component vector of float)
-0:357          'inFM0' (temp 2X2 matrix of float)
-0:357          'inFV0' (temp 2-component vector of float)
-0:357      move second child to first child (temp 2-component vector of float)
-0:357        'r5' (temp 2-component vector of float)
-0:357        vector-times-matrix (temp 2-component vector of float)
-0:357          'inFV0' (temp 2-component vector of float)
-0:357          'inFM0' (temp 2X2 matrix of float)
-0:357      move second child to first child (temp 2X2 matrix of float)
-0:357        'r6' (temp 2X2 matrix of float)
-0:357        matrix-scale (temp 2X2 matrix of float)
-0:357          'inFM0' (temp 2X2 matrix of float)
-0:357          'inF0' (temp float)
-0:357      move second child to first child (temp 2X2 matrix of float)
-0:357        'r7' (temp 2X2 matrix of float)
-0:357        matrix-scale (temp 2X2 matrix of float)
-0:357          'inF0' (temp float)
-0:357          'inFM0' (temp 2X2 matrix of float)
-0:357      move second child to first child (temp 2X2 matrix of float)
-0:357        'r8' (temp 2X2 matrix of float)
-0:357        matrix-multiply (temp 2X2 matrix of float)
-0:357          'inFM0' (temp 2X2 matrix of float)
-0:357          'inFM1' (temp 2X2 matrix of float)
-0:367  Function Definition: TestGenMul(f1;f1;vf3;vf3;mf33;mf33; (temp void)
-0:363    Function Parameters: 
-0:363      'inF0' (temp float)
-0:363      'inF1' (temp float)
-0:363      'inFV0' (temp 3-component vector of float)
-0:363      'inFV1' (temp 3-component vector of float)
-0:363      'inFM0' (temp 3X3 matrix of float)
-0:363      'inFM1' (temp 3X3 matrix of float)
+0:373      move second child to first child (temp float)
+0:373        'r0' (temp float)
+0:373        component-wise multiply (temp float)
+0:373          'inF0' (temp float)
+0:373          'inF1' (temp float)
+0:373      move second child to first child (temp 2-component vector of float)
+0:373        'r1' (temp 2-component vector of float)
+0:373        vector-scale (temp 2-component vector of float)
+0:373          'inFV0' (temp 2-component vector of float)
+0:373          'inF0' (temp float)
+0:373      move second child to first child (temp 2-component vector of float)
+0:373        'r2' (temp 2-component vector of float)
+0:373        vector-scale (temp 2-component vector of float)
+0:373          'inF0' (temp float)
+0:373          'inFV0' (temp 2-component vector of float)
+0:373      move second child to first child (temp float)
+0:373        'r3' (temp float)
+0:373        dot-product (global float)
+0:373          'inFV0' (temp 2-component vector of float)
+0:373          'inFV1' (temp 2-component vector of float)
+0:373      move second child to first child (temp 2-component vector of float)
+0:373        'r4' (temp 2-component vector of float)
+0:373        matrix-times-vector (temp 2-component vector of float)
+0:373          'inFM0' (temp 2X2 matrix of float)
+0:373          'inFV0' (temp 2-component vector of float)
+0:373      move second child to first child (temp 2-component vector of float)
+0:373        'r5' (temp 2-component vector of float)
+0:373        vector-times-matrix (temp 2-component vector of float)
+0:373          'inFV0' (temp 2-component vector of float)
+0:373          'inFM0' (temp 2X2 matrix of float)
+0:373      move second child to first child (temp 2X2 matrix of float)
+0:373        'r6' (temp 2X2 matrix of float)
+0:373        matrix-scale (temp 2X2 matrix of float)
+0:373          'inFM0' (temp 2X2 matrix of float)
+0:373          'inF0' (temp float)
+0:373      move second child to first child (temp 2X2 matrix of float)
+0:373        'r7' (temp 2X2 matrix of float)
+0:373        matrix-scale (temp 2X2 matrix of float)
+0:373          'inF0' (temp float)
+0:373          'inFM0' (temp 2X2 matrix of float)
+0:373      move second child to first child (temp 2X2 matrix of float)
+0:373        'r8' (temp 2X2 matrix of float)
+0:373        matrix-multiply (temp 2X2 matrix of float)
+0:373          'inFM0' (temp 2X2 matrix of float)
+0:373          'inFM1' (temp 2X2 matrix of float)
+0:383  Function Definition: TestGenMul(f1;f1;vf3;vf3;mf33;mf33; (temp void)
+0:379    Function Parameters: 
+0:379      'inF0' (temp float)
+0:379      'inF1' (temp float)
+0:379      'inFV0' (temp 3-component vector of float)
+0:379      'inFV1' (temp 3-component vector of float)
+0:379      'inFM0' (temp 3X3 matrix of float)
+0:379      'inFM1' (temp 3X3 matrix of float)
 0:?     Sequence
-0:364      move second child to first child (temp float)
-0:364        'r0' (temp float)
-0:364        component-wise multiply (temp float)
-0:364          'inF0' (temp float)
-0:364          'inF1' (temp float)
-0:364      move second child to first child (temp 3-component vector of float)
-0:364        'r1' (temp 3-component vector of float)
-0:364        vector-scale (temp 3-component vector of float)
-0:364          'inFV0' (temp 3-component vector of float)
-0:364          'inF0' (temp float)
-0:364      move second child to first child (temp 3-component vector of float)
-0:364        'r2' (temp 3-component vector of float)
-0:364        vector-scale (temp 3-component vector of float)
-0:364          'inF0' (temp float)
-0:364          'inFV0' (temp 3-component vector of float)
-0:364      move second child to first child (temp float)
-0:364        'r3' (temp float)
-0:364        dot-product (global float)
-0:364          'inFV0' (temp 3-component vector of float)
-0:364          'inFV1' (temp 3-component vector of float)
-0:364      move second child to first child (temp 3-component vector of float)
-0:364        'r4' (temp 3-component vector of float)
-0:364        matrix-times-vector (temp 3-component vector of float)
-0:364          'inFM0' (temp 3X3 matrix of float)
-0:364          'inFV0' (temp 3-component vector of float)
-0:364      move second child to first child (temp 3-component vector of float)
-0:364        'r5' (temp 3-component vector of float)
-0:364        vector-times-matrix (temp 3-component vector of float)
-0:364          'inFV0' (temp 3-component vector of float)
-0:364          'inFM0' (temp 3X3 matrix of float)
-0:364      move second child to first child (temp 3X3 matrix of float)
-0:364        'r6' (temp 3X3 matrix of float)
-0:364        matrix-scale (temp 3X3 matrix of float)
-0:364          'inFM0' (temp 3X3 matrix of float)
-0:364          'inF0' (temp float)
-0:364      move second child to first child (temp 3X3 matrix of float)
-0:364        'r7' (temp 3X3 matrix of float)
-0:364        matrix-scale (temp 3X3 matrix of float)
-0:364          'inF0' (temp float)
-0:364          'inFM0' (temp 3X3 matrix of float)
-0:364      move second child to first child (temp 3X3 matrix of float)
-0:364        'r8' (temp 3X3 matrix of float)
-0:364        matrix-multiply (temp 3X3 matrix of float)
-0:364          'inFM0' (temp 3X3 matrix of float)
-0:364          'inFM1' (temp 3X3 matrix of float)
-0:373  Function Definition: TestGenMul(f1;f1;vf4;vf4;mf44;mf44; (temp void)
-0:370    Function Parameters: 
-0:370      'inF0' (temp float)
-0:370      'inF1' (temp float)
-0:370      'inFV0' (temp 4-component vector of float)
-0:370      'inFV1' (temp 4-component vector of float)
-0:370      'inFM0' (temp 4X4 matrix of float)
-0:370      'inFM1' (temp 4X4 matrix of float)
+0:380      move second child to first child (temp float)
+0:380        'r0' (temp float)
+0:380        component-wise multiply (temp float)
+0:380          'inF0' (temp float)
+0:380          'inF1' (temp float)
+0:380      move second child to first child (temp 3-component vector of float)
+0:380        'r1' (temp 3-component vector of float)
+0:380        vector-scale (temp 3-component vector of float)
+0:380          'inFV0' (temp 3-component vector of float)
+0:380          'inF0' (temp float)
+0:380      move second child to first child (temp 3-component vector of float)
+0:380        'r2' (temp 3-component vector of float)
+0:380        vector-scale (temp 3-component vector of float)
+0:380          'inF0' (temp float)
+0:380          'inFV0' (temp 3-component vector of float)
+0:380      move second child to first child (temp float)
+0:380        'r3' (temp float)
+0:380        dot-product (global float)
+0:380          'inFV0' (temp 3-component vector of float)
+0:380          'inFV1' (temp 3-component vector of float)
+0:380      move second child to first child (temp 3-component vector of float)
+0:380        'r4' (temp 3-component vector of float)
+0:380        matrix-times-vector (temp 3-component vector of float)
+0:380          'inFM0' (temp 3X3 matrix of float)
+0:380          'inFV0' (temp 3-component vector of float)
+0:380      move second child to first child (temp 3-component vector of float)
+0:380        'r5' (temp 3-component vector of float)
+0:380        vector-times-matrix (temp 3-component vector of float)
+0:380          'inFV0' (temp 3-component vector of float)
+0:380          'inFM0' (temp 3X3 matrix of float)
+0:380      move second child to first child (temp 3X3 matrix of float)
+0:380        'r6' (temp 3X3 matrix of float)
+0:380        matrix-scale (temp 3X3 matrix of float)
+0:380          'inFM0' (temp 3X3 matrix of float)
+0:380          'inF0' (temp float)
+0:380      move second child to first child (temp 3X3 matrix of float)
+0:380        'r7' (temp 3X3 matrix of float)
+0:380        matrix-scale (temp 3X3 matrix of float)
+0:380          'inF0' (temp float)
+0:380          'inFM0' (temp 3X3 matrix of float)
+0:380      move second child to first child (temp 3X3 matrix of float)
+0:380        'r8' (temp 3X3 matrix of float)
+0:380        matrix-multiply (temp 3X3 matrix of float)
+0:380          'inFM0' (temp 3X3 matrix of float)
+0:380          'inFM1' (temp 3X3 matrix of float)
+0:389  Function Definition: TestGenMul(f1;f1;vf4;vf4;mf44;mf44; (temp void)
+0:386    Function Parameters: 
+0:386      'inF0' (temp float)
+0:386      'inF1' (temp float)
+0:386      'inFV0' (temp 4-component vector of float)
+0:386      'inFV1' (temp 4-component vector of float)
+0:386      'inFM0' (temp 4X4 matrix of float)
+0:386      'inFM1' (temp 4X4 matrix of float)
 0:?     Sequence
-0:371      move second child to first child (temp float)
-0:371        'r0' (temp float)
-0:371        component-wise multiply (temp float)
-0:371          'inF0' (temp float)
-0:371          'inF1' (temp float)
-0:371      move second child to first child (temp 4-component vector of float)
-0:371        'r1' (temp 4-component vector of float)
-0:371        vector-scale (temp 4-component vector of float)
-0:371          'inFV0' (temp 4-component vector of float)
-0:371          'inF0' (temp float)
-0:371      move second child to first child (temp 4-component vector of float)
-0:371        'r2' (temp 4-component vector of float)
-0:371        vector-scale (temp 4-component vector of float)
-0:371          'inF0' (temp float)
-0:371          'inFV0' (temp 4-component vector of float)
-0:371      move second child to first child (temp float)
-0:371        'r3' (temp float)
-0:371        dot-product (global float)
-0:371          'inFV0' (temp 4-component vector of float)
-0:371          'inFV1' (temp 4-component vector of float)
-0:371      move second child to first child (temp 4-component vector of float)
-0:371        'r4' (temp 4-component vector of float)
-0:371        matrix-times-vector (temp 4-component vector of float)
-0:371          'inFM0' (temp 4X4 matrix of float)
-0:371          'inFV0' (temp 4-component vector of float)
-0:371      move second child to first child (temp 4-component vector of float)
-0:371        'r5' (temp 4-component vector of float)
-0:371        vector-times-matrix (temp 4-component vector of float)
-0:371          'inFV0' (temp 4-component vector of float)
-0:371          'inFM0' (temp 4X4 matrix of float)
-0:371      move second child to first child (temp 4X4 matrix of float)
-0:371        'r6' (temp 4X4 matrix of float)
-0:371        matrix-scale (temp 4X4 matrix of float)
-0:371          'inFM0' (temp 4X4 matrix of float)
-0:371          'inF0' (temp float)
-0:371      move second child to first child (temp 4X4 matrix of float)
-0:371        'r7' (temp 4X4 matrix of float)
-0:371        matrix-scale (temp 4X4 matrix of float)
-0:371          'inF0' (temp float)
-0:371          'inFM0' (temp 4X4 matrix of float)
-0:371      move second child to first child (temp 4X4 matrix of float)
-0:371        'r8' (temp 4X4 matrix of float)
-0:371        matrix-multiply (temp 4X4 matrix of float)
-0:371          'inFM0' (temp 4X4 matrix of float)
-0:371          'inFM1' (temp 4X4 matrix of float)
+0:387      move second child to first child (temp float)
+0:387        'r0' (temp float)
+0:387        component-wise multiply (temp float)
+0:387          'inF0' (temp float)
+0:387          'inF1' (temp float)
+0:387      move second child to first child (temp 4-component vector of float)
+0:387        'r1' (temp 4-component vector of float)
+0:387        vector-scale (temp 4-component vector of float)
+0:387          'inFV0' (temp 4-component vector of float)
+0:387          'inF0' (temp float)
+0:387      move second child to first child (temp 4-component vector of float)
+0:387        'r2' (temp 4-component vector of float)
+0:387        vector-scale (temp 4-component vector of float)
+0:387          'inF0' (temp float)
+0:387          'inFV0' (temp 4-component vector of float)
+0:387      move second child to first child (temp float)
+0:387        'r3' (temp float)
+0:387        dot-product (global float)
+0:387          'inFV0' (temp 4-component vector of float)
+0:387          'inFV1' (temp 4-component vector of float)
+0:387      move second child to first child (temp 4-component vector of float)
+0:387        'r4' (temp 4-component vector of float)
+0:387        matrix-times-vector (temp 4-component vector of float)
+0:387          'inFM0' (temp 4X4 matrix of float)
+0:387          'inFV0' (temp 4-component vector of float)
+0:387      move second child to first child (temp 4-component vector of float)
+0:387        'r5' (temp 4-component vector of float)
+0:387        vector-times-matrix (temp 4-component vector of float)
+0:387          'inFV0' (temp 4-component vector of float)
+0:387          'inFM0' (temp 4X4 matrix of float)
+0:387      move second child to first child (temp 4X4 matrix of float)
+0:387        'r6' (temp 4X4 matrix of float)
+0:387        matrix-scale (temp 4X4 matrix of float)
+0:387          'inFM0' (temp 4X4 matrix of float)
+0:387          'inF0' (temp float)
+0:387      move second child to first child (temp 4X4 matrix of float)
+0:387        'r7' (temp 4X4 matrix of float)
+0:387        matrix-scale (temp 4X4 matrix of float)
+0:387          'inF0' (temp float)
+0:387          'inFM0' (temp 4X4 matrix of float)
+0:387      move second child to first child (temp 4X4 matrix of float)
+0:387        'r8' (temp 4X4 matrix of float)
+0:387        matrix-multiply (temp 4X4 matrix of float)
+0:387          'inFM0' (temp 4X4 matrix of float)
+0:387          'inFM1' (temp 4X4 matrix of float)
 0:?   Linker Objects
 
 
@@ -1212,11 +1230,13 @@ Linked vertex stage:
 
 Shader version: 450
 0:? Sequence
-0:59  Function Definition: VertexShaderFunction(f1;f1;f1; (temp float)
+0:62  Function Definition: VertexShaderFunction(f1;f1;f1;u1;u1; (temp float)
 0:2    Function Parameters: 
 0:2      'inF0' (temp float)
 0:2      'inF1' (temp float)
 0:2      'inF2' (temp float)
+0:2      'inU0' (temp uint)
+0:2      'inU1' (temp uint)
 0:?     Sequence
 0:3      all (global bool)
 0:3        'inF0' (temp float)
@@ -1228,881 +1248,899 @@ Shader version: 450
 0:6        'inF0' (temp float)
 0:7      arc sine (global float)
 0:7        'inF0' (temp float)
-0:8      arc tangent (global float)
+0:8      floatBitsToInt (global int)
 0:8        'inF0' (temp float)
-0:9      arc tangent (global float)
+0:9      floatBitsToUint (global uint)
 0:9        'inF0' (temp float)
-0:9        'inF1' (temp float)
-0:10      Ceiling (global float)
-0:10        'inF0' (temp float)
-0:11      clamp (global float)
-0:11        'inF0' (temp float)
-0:11        'inF1' (temp float)
-0:11        'inF2' (temp float)
-0:12      cosine (global float)
+0:10      intBitsToFloat (global float)
+0:10        'inU0' (temp uint)
+0:12      arc tangent (global float)
 0:12        'inF0' (temp float)
-0:13      hyp. cosine (global float)
+0:13      arc tangent (global float)
 0:13        'inF0' (temp float)
-0:14      bitCount (global uint)
-0:14        Constant:
-0:14          7 (const uint)
-0:15      degrees (global float)
+0:13        'inF1' (temp float)
+0:14      Ceiling (global float)
+0:14        'inF0' (temp float)
+0:15      clamp (global float)
 0:15        'inF0' (temp float)
-0:19      exp (global float)
+0:15        'inF1' (temp float)
+0:15        'inF2' (temp float)
+0:16      cosine (global float)
+0:16        'inF0' (temp float)
+0:17      hyp. cosine (global float)
+0:17        'inF0' (temp float)
+0:18      bitCount (global uint)
+0:18        Constant:
+0:18          7 (const uint)
+0:19      degrees (global float)
 0:19        'inF0' (temp float)
-0:20      exp2 (global float)
-0:20        'inF0' (temp float)
-0:21      findMSB (global int)
-0:21        Constant:
-0:21          7 (const int)
-0:22      findLSB (global int)
-0:22        Constant:
-0:22          7 (const int)
-0:23      Floor (global float)
+0:23      exp (global float)
 0:23        'inF0' (temp float)
-0:25      mod (global float)
-0:25        'inF0' (temp float)
-0:25        'inF1' (temp float)
-0:26      Fraction (global float)
-0:26        'inF0' (temp float)
-0:27      frexp (global float)
+0:24      exp2 (global float)
+0:24        'inF0' (temp float)
+0:25      findMSB (global int)
+0:25        Constant:
+0:25          7 (const int)
+0:26      findLSB (global int)
+0:26        Constant:
+0:26          7 (const int)
+0:27      Floor (global float)
 0:27        'inF0' (temp float)
-0:27        'inF1' (temp float)
-0:28      fwidth (global float)
-0:28        'inF0' (temp float)
-0:29      isinf (global bool)
+0:29      mod (global float)
 0:29        'inF0' (temp float)
-0:30      isnan (global bool)
+0:29        'inF1' (temp float)
+0:30      Fraction (global float)
 0:30        'inF0' (temp float)
-0:31      ldexp (global float)
+0:31      frexp (global float)
 0:31        'inF0' (temp float)
 0:31        'inF1' (temp float)
-0:32      log (global float)
+0:32      isinf (global bool)
 0:32        'inF0' (temp float)
-0:33      component-wise multiply (temp float)
-0:33        log2 (temp float)
-0:33          'inF0' (temp float)
-0:33        Constant:
-0:33          0.301030
-0:34      log2 (global float)
+0:33      isnan (global bool)
+0:33        'inF0' (temp float)
+0:34      ldexp (global float)
 0:34        'inF0' (temp float)
-0:35      max (global float)
+0:34        'inF1' (temp float)
+0:35      log (global float)
 0:35        'inF0' (temp float)
-0:35        'inF1' (temp float)
-0:36      min (global float)
-0:36        'inF0' (temp float)
-0:36        'inF1' (temp float)
-0:38      pow (global float)
+0:36      component-wise multiply (temp float)
+0:36        log2 (temp float)
+0:36          'inF0' (temp float)
+0:36        Constant:
+0:36          0.301030
+0:37      log2 (global float)
+0:37        'inF0' (temp float)
+0:38      max (global float)
 0:38        'inF0' (temp float)
 0:38        'inF1' (temp float)
-0:39      radians (global float)
+0:39      min (global float)
 0:39        'inF0' (temp float)
-0:40      bitFieldReverse (global uint)
-0:40        Constant:
-0:40          2 (const uint)
-0:41      roundEven (global float)
+0:39        'inF1' (temp float)
+0:41      pow (global float)
 0:41        'inF0' (temp float)
-0:42      inverse sqrt (global float)
+0:41        'inF1' (temp float)
+0:42      radians (global float)
 0:42        'inF0' (temp float)
-0:43      clamp (global float)
-0:43        'inF0' (temp float)
+0:43      bitFieldReverse (global uint)
 0:43        Constant:
-0:43          0.000000
-0:43        Constant:
-0:43          1.000000
-0:44      Sign (global float)
+0:43          2 (const uint)
+0:44      roundEven (global float)
 0:44        'inF0' (temp float)
-0:45      sine (global float)
+0:45      inverse sqrt (global float)
 0:45        'inF0' (temp float)
-0:46      Sequence
-0:46        move second child to first child (temp float)
-0:46          'inF1' (temp float)
-0:46          sine (temp float)
-0:46            'inF0' (temp float)
-0:46        move second child to first child (temp float)
-0:46          'inF2' (temp float)
-0:46          cosine (temp float)
-0:46            'inF0' (temp float)
-0:47      hyp. sine (global float)
+0:46      clamp (temp float)
+0:46        'inF0' (temp float)
+0:46        Constant:
+0:46          0.000000
+0:46        Constant:
+0:46          1.000000
+0:47      Sign (global float)
 0:47        'inF0' (temp float)
-0:48      smoothstep (global float)
+0:48      sine (global float)
 0:48        'inF0' (temp float)
-0:48        'inF1' (temp float)
-0:48        'inF2' (temp float)
-0:49      sqrt (global float)
-0:49        'inF0' (temp float)
-0:50      step (global float)
+0:49      Sequence
+0:49        move second child to first child (temp float)
+0:49          'inF1' (temp float)
+0:49          sine (temp float)
+0:49            'inF0' (temp float)
+0:49        move second child to first child (temp float)
+0:49          'inF2' (temp float)
+0:49          cosine (temp float)
+0:49            'inF0' (temp float)
+0:50      hyp. sine (global float)
 0:50        'inF0' (temp float)
-0:50        'inF1' (temp float)
-0:51      tangent (global float)
+0:51      smoothstep (global float)
 0:51        'inF0' (temp float)
-0:52      hyp. tangent (global float)
+0:51        'inF1' (temp float)
+0:51        'inF2' (temp float)
+0:52      sqrt (global float)
 0:52        'inF0' (temp float)
-0:54      trunc (global float)
+0:53      step (global float)
+0:53        'inF0' (temp float)
+0:53        'inF1' (temp float)
+0:54      tangent (global float)
 0:54        'inF0' (temp float)
-0:56      Branch: Return with expression
-0:56        Constant:
-0:56          0.000000
-0:65  Function Definition: VertexShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
-0:60    Function Parameters: 
-0:60      'inF0' (temp 1-component vector of float)
-0:60      'inF1' (temp 1-component vector of float)
-0:60      'inF2' (temp 1-component vector of float)
+0:55      hyp. tangent (global float)
+0:55        'inF0' (temp float)
+0:57      trunc (global float)
+0:57        'inF0' (temp float)
+0:59      Branch: Return with expression
+0:59        Constant:
+0:59          0.000000
+0:68  Function Definition: VertexShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
+0:63    Function Parameters: 
+0:63      'inF0' (temp 1-component vector of float)
+0:63      'inF1' (temp 1-component vector of float)
+0:63      'inF2' (temp 1-component vector of float)
 0:?     Sequence
-0:62      Branch: Return with expression
-0:62        Constant:
-0:62          0.000000
-0:131  Function Definition: VertexShaderFunction(vf2;vf2;vf2; (temp 2-component vector of float)
-0:66    Function Parameters: 
-0:66      'inF0' (temp 2-component vector of float)
-0:66      'inF1' (temp 2-component vector of float)
-0:66      'inF2' (temp 2-component vector of float)
+0:65      Branch: Return with expression
+0:65        Constant:
+0:65          0.000000
+0:137  Function Definition: VertexShaderFunction(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
+0:69    Function Parameters: 
+0:69      'inF0' (temp 2-component vector of float)
+0:69      'inF1' (temp 2-component vector of float)
+0:69      'inF2' (temp 2-component vector of float)
+0:69      'inU0' (temp 2-component vector of uint)
+0:69      'inU1' (temp 2-component vector of uint)
 0:?     Sequence
-0:67      all (global bool)
-0:67        'inF0' (temp 2-component vector of float)
-0:68      Absolute value (global 2-component vector of float)
-0:68        'inF0' (temp 2-component vector of float)
-0:69      arc cosine (global 2-component vector of float)
-0:69        'inF0' (temp 2-component vector of float)
-0:70      any (global bool)
+0:70      all (global bool)
 0:70        'inF0' (temp 2-component vector of float)
-0:71      arc sine (global 2-component vector of float)
+0:71      Absolute value (global 2-component vector of float)
 0:71        'inF0' (temp 2-component vector of float)
-0:72      arc tangent (global 2-component vector of float)
+0:72      arc cosine (global 2-component vector of float)
 0:72        'inF0' (temp 2-component vector of float)
-0:73      arc tangent (global 2-component vector of float)
+0:73      any (global bool)
 0:73        'inF0' (temp 2-component vector of float)
-0:73        'inF1' (temp 2-component vector of float)
-0:74      Ceiling (global 2-component vector of float)
+0:74      arc sine (global 2-component vector of float)
 0:74        'inF0' (temp 2-component vector of float)
-0:75      clamp (global 2-component vector of float)
+0:75      floatBitsToInt (global 2-component vector of int)
 0:75        'inF0' (temp 2-component vector of float)
-0:75        'inF1' (temp 2-component vector of float)
-0:75        'inF2' (temp 2-component vector of float)
-0:76      cosine (global 2-component vector of float)
+0:76      floatBitsToUint (global 2-component vector of uint)
 0:76        'inF0' (temp 2-component vector of float)
-0:77      hyp. cosine (global 2-component vector of float)
-0:77        'inF0' (temp 2-component vector of float)
-0:?       bitCount (global 2-component vector of uint)
-0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:79      degrees (global 2-component vector of float)
+0:77      intBitsToFloat (global 2-component vector of float)
+0:77        'inU0' (temp 2-component vector of uint)
+0:79      arc tangent (global 2-component vector of float)
 0:79        'inF0' (temp 2-component vector of float)
-0:80      distance (global float)
+0:80      arc tangent (global 2-component vector of float)
 0:80        'inF0' (temp 2-component vector of float)
 0:80        'inF1' (temp 2-component vector of float)
-0:81      dot-product (global float)
+0:81      Ceiling (global 2-component vector of float)
 0:81        'inF0' (temp 2-component vector of float)
-0:81        'inF1' (temp 2-component vector of float)
-0:85      exp (global 2-component vector of float)
-0:85        'inF0' (temp 2-component vector of float)
-0:86      exp2 (global 2-component vector of float)
+0:82      clamp (global 2-component vector of float)
+0:82        'inF0' (temp 2-component vector of float)
+0:82        'inF1' (temp 2-component vector of float)
+0:82        'inF2' (temp 2-component vector of float)
+0:83      cosine (global 2-component vector of float)
+0:83        'inF0' (temp 2-component vector of float)
+0:84      hyp. cosine (global 2-component vector of float)
+0:84        'inF0' (temp 2-component vector of float)
+0:?       bitCount (global 2-component vector of uint)
+0:?         Constant:
+0:?           7 (const uint)
+0:?           3 (const uint)
+0:86      degrees (global 2-component vector of float)
 0:86        'inF0' (temp 2-component vector of float)
-0:87      face-forward (global 2-component vector of float)
+0:87      distance (global float)
 0:87        'inF0' (temp 2-component vector of float)
 0:87        'inF1' (temp 2-component vector of float)
-0:87        'inF2' (temp 2-component vector of float)
-0:88      findMSB (global int)
-0:88        Constant:
-0:88          7 (const int)
-0:89      findLSB (global int)
-0:89        Constant:
-0:89          7 (const int)
-0:90      Floor (global 2-component vector of float)
-0:90        'inF0' (temp 2-component vector of float)
-0:92      mod (global 2-component vector of float)
+0:88      dot-product (global float)
+0:88        'inF0' (temp 2-component vector of float)
+0:88        'inF1' (temp 2-component vector of float)
+0:92      exp (global 2-component vector of float)
 0:92        'inF0' (temp 2-component vector of float)
-0:92        'inF1' (temp 2-component vector of float)
-0:93      Fraction (global 2-component vector of float)
+0:93      exp2 (global 2-component vector of float)
 0:93        'inF0' (temp 2-component vector of float)
-0:94      frexp (global 2-component vector of float)
+0:94      face-forward (global 2-component vector of float)
 0:94        'inF0' (temp 2-component vector of float)
 0:94        'inF1' (temp 2-component vector of float)
-0:95      fwidth (global 2-component vector of float)
-0:95        'inF0' (temp 2-component vector of float)
-0:96      isinf (global 2-component vector of bool)
-0:96        'inF0' (temp 2-component vector of float)
-0:97      isnan (global 2-component vector of bool)
+0:94        'inF2' (temp 2-component vector of float)
+0:95      findMSB (global int)
+0:95        Constant:
+0:95          7 (const int)
+0:96      findLSB (global int)
+0:96        Constant:
+0:96          7 (const int)
+0:97      Floor (global 2-component vector of float)
 0:97        'inF0' (temp 2-component vector of float)
-0:98      ldexp (global 2-component vector of float)
-0:98        'inF0' (temp 2-component vector of float)
-0:98        'inF1' (temp 2-component vector of float)
-0:99      length (global float)
+0:99      mod (global 2-component vector of float)
 0:99        'inF0' (temp 2-component vector of float)
-0:100      log (global 2-component vector of float)
+0:99        'inF1' (temp 2-component vector of float)
+0:100      Fraction (global 2-component vector of float)
 0:100        'inF0' (temp 2-component vector of float)
-0:101      vector-scale (temp 2-component vector of float)
-0:101        log2 (temp 2-component vector of float)
-0:101          'inF0' (temp 2-component vector of float)
-0:101        Constant:
-0:101          0.301030
-0:102      log2 (global 2-component vector of float)
+0:101      frexp (global 2-component vector of float)
+0:101        'inF0' (temp 2-component vector of float)
+0:101        'inF1' (temp 2-component vector of float)
+0:102      isinf (global 2-component vector of bool)
 0:102        'inF0' (temp 2-component vector of float)
-0:103      max (global 2-component vector of float)
+0:103      isnan (global 2-component vector of bool)
 0:103        'inF0' (temp 2-component vector of float)
-0:103        'inF1' (temp 2-component vector of float)
-0:104      min (global 2-component vector of float)
+0:104      ldexp (global 2-component vector of float)
 0:104        'inF0' (temp 2-component vector of float)
 0:104        'inF1' (temp 2-component vector of float)
-0:106      normalize (global 2-component vector of float)
+0:105      length (global float)
+0:105        'inF0' (temp 2-component vector of float)
+0:106      log (global 2-component vector of float)
 0:106        'inF0' (temp 2-component vector of float)
-0:107      pow (global 2-component vector of float)
-0:107        'inF0' (temp 2-component vector of float)
-0:107        'inF1' (temp 2-component vector of float)
-0:108      radians (global 2-component vector of float)
+0:107      vector-scale (temp 2-component vector of float)
+0:107        log2 (temp 2-component vector of float)
+0:107          'inF0' (temp 2-component vector of float)
+0:107        Constant:
+0:107          0.301030
+0:108      log2 (global 2-component vector of float)
 0:108        'inF0' (temp 2-component vector of float)
-0:109      reflect (global 2-component vector of float)
+0:109      max (global 2-component vector of float)
 0:109        'inF0' (temp 2-component vector of float)
 0:109        'inF1' (temp 2-component vector of float)
-0:110      refract (global 2-component vector of float)
+0:110      min (global 2-component vector of float)
 0:110        'inF0' (temp 2-component vector of float)
 0:110        'inF1' (temp 2-component vector of float)
-0:110        Constant:
-0:110          2.000000
-0:?       bitFieldReverse (global 2-component vector of uint)
-0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:112      roundEven (global 2-component vector of float)
+0:112      normalize (global 2-component vector of float)
 0:112        'inF0' (temp 2-component vector of float)
-0:113      inverse sqrt (global 2-component vector of float)
+0:113      pow (global 2-component vector of float)
 0:113        'inF0' (temp 2-component vector of float)
-0:114      clamp (global 2-component vector of float)
+0:113        'inF1' (temp 2-component vector of float)
+0:114      radians (global 2-component vector of float)
 0:114        'inF0' (temp 2-component vector of float)
-0:114        Constant:
-0:114          0.000000
-0:114        Constant:
-0:114          1.000000
-0:115      Sign (global 2-component vector of float)
+0:115      reflect (global 2-component vector of float)
 0:115        'inF0' (temp 2-component vector of float)
-0:116      sine (global 2-component vector of float)
+0:115        'inF1' (temp 2-component vector of float)
+0:116      refract (global 2-component vector of float)
 0:116        'inF0' (temp 2-component vector of float)
-0:117      Sequence
-0:117        move second child to first child (temp 2-component vector of float)
-0:117          'inF1' (temp 2-component vector of float)
-0:117          sine (temp 2-component vector of float)
-0:117            'inF0' (temp 2-component vector of float)
-0:117        move second child to first child (temp 2-component vector of float)
-0:117          'inF2' (temp 2-component vector of float)
-0:117          cosine (temp 2-component vector of float)
-0:117            'inF0' (temp 2-component vector of float)
-0:118      hyp. sine (global 2-component vector of float)
+0:116        'inF1' (temp 2-component vector of float)
+0:116        Constant:
+0:116          2.000000
+0:?       bitFieldReverse (global 2-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:118      roundEven (global 2-component vector of float)
 0:118        'inF0' (temp 2-component vector of float)
-0:119      smoothstep (global 2-component vector of float)
+0:119      inverse sqrt (global 2-component vector of float)
 0:119        'inF0' (temp 2-component vector of float)
-0:119        'inF1' (temp 2-component vector of float)
-0:119        'inF2' (temp 2-component vector of float)
-0:120      sqrt (global 2-component vector of float)
+0:120      clamp (temp 2-component vector of float)
 0:120        'inF0' (temp 2-component vector of float)
-0:121      step (global 2-component vector of float)
+0:120        Constant:
+0:120          0.000000
+0:120        Constant:
+0:120          1.000000
+0:121      Sign (global 2-component vector of float)
 0:121        'inF0' (temp 2-component vector of float)
-0:121        'inF1' (temp 2-component vector of float)
-0:122      tangent (global 2-component vector of float)
+0:122      sine (global 2-component vector of float)
 0:122        'inF0' (temp 2-component vector of float)
-0:123      hyp. tangent (global 2-component vector of float)
-0:123        'inF0' (temp 2-component vector of float)
-0:125      trunc (global 2-component vector of float)
+0:123      Sequence
+0:123        move second child to first child (temp 2-component vector of float)
+0:123          'inF1' (temp 2-component vector of float)
+0:123          sine (temp 2-component vector of float)
+0:123            'inF0' (temp 2-component vector of float)
+0:123        move second child to first child (temp 2-component vector of float)
+0:123          'inF2' (temp 2-component vector of float)
+0:123          cosine (temp 2-component vector of float)
+0:123            'inF0' (temp 2-component vector of float)
+0:124      hyp. sine (global 2-component vector of float)
+0:124        'inF0' (temp 2-component vector of float)
+0:125      smoothstep (global 2-component vector of float)
 0:125        'inF0' (temp 2-component vector of float)
-0:128      Branch: Return with expression
+0:125        'inF1' (temp 2-component vector of float)
+0:125        'inF2' (temp 2-component vector of float)
+0:126      sqrt (global 2-component vector of float)
+0:126        'inF0' (temp 2-component vector of float)
+0:127      step (global 2-component vector of float)
+0:127        'inF0' (temp 2-component vector of float)
+0:127        'inF1' (temp 2-component vector of float)
+0:128      tangent (global 2-component vector of float)
+0:128        'inF0' (temp 2-component vector of float)
+0:129      hyp. tangent (global 2-component vector of float)
+0:129        'inF0' (temp 2-component vector of float)
+0:131      trunc (global 2-component vector of float)
+0:131        'inF0' (temp 2-component vector of float)
+0:134      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:198  Function Definition: VertexShaderFunction(vf3;vf3;vf3; (temp 3-component vector of float)
-0:132    Function Parameters: 
-0:132      'inF0' (temp 3-component vector of float)
-0:132      'inF1' (temp 3-component vector of float)
-0:132      'inF2' (temp 3-component vector of float)
+0:207  Function Definition: VertexShaderFunction(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
+0:138    Function Parameters: 
+0:138      'inF0' (temp 3-component vector of float)
+0:138      'inF1' (temp 3-component vector of float)
+0:138      'inF2' (temp 3-component vector of float)
+0:138      'inU0' (temp 3-component vector of uint)
+0:138      'inU1' (temp 3-component vector of uint)
 0:?     Sequence
-0:133      all (global bool)
-0:133        'inF0' (temp 3-component vector of float)
-0:134      Absolute value (global 3-component vector of float)
-0:134        'inF0' (temp 3-component vector of float)
-0:135      arc cosine (global 3-component vector of float)
-0:135        'inF0' (temp 3-component vector of float)
-0:136      any (global bool)
-0:136        'inF0' (temp 3-component vector of float)
-0:137      arc sine (global 3-component vector of float)
-0:137        'inF0' (temp 3-component vector of float)
-0:138      arc tangent (global 3-component vector of float)
-0:138        'inF0' (temp 3-component vector of float)
-0:139      arc tangent (global 3-component vector of float)
+0:139      all (global bool)
 0:139        'inF0' (temp 3-component vector of float)
-0:139        'inF1' (temp 3-component vector of float)
-0:140      Ceiling (global 3-component vector of float)
+0:140      Absolute value (global 3-component vector of float)
 0:140        'inF0' (temp 3-component vector of float)
-0:141      clamp (global 3-component vector of float)
+0:141      arc cosine (global 3-component vector of float)
 0:141        'inF0' (temp 3-component vector of float)
-0:141        'inF1' (temp 3-component vector of float)
-0:141        'inF2' (temp 3-component vector of float)
-0:142      cosine (global 3-component vector of float)
+0:142      any (global bool)
 0:142        'inF0' (temp 3-component vector of float)
-0:143      hyp. cosine (global 3-component vector of float)
+0:143      arc sine (global 3-component vector of float)
 0:143        'inF0' (temp 3-component vector of float)
+0:144      floatBitsToInt (global 3-component vector of int)
+0:144        'inF0' (temp 3-component vector of float)
+0:145      floatBitsToUint (global 3-component vector of uint)
+0:145        'inF0' (temp 3-component vector of float)
+0:146      intBitsToFloat (global 3-component vector of float)
+0:146        'inU0' (temp 3-component vector of uint)
+0:148      arc tangent (global 3-component vector of float)
+0:148        'inF0' (temp 3-component vector of float)
+0:149      arc tangent (global 3-component vector of float)
+0:149        'inF0' (temp 3-component vector of float)
+0:149        'inF1' (temp 3-component vector of float)
+0:150      Ceiling (global 3-component vector of float)
+0:150        'inF0' (temp 3-component vector of float)
+0:151      clamp (global 3-component vector of float)
+0:151        'inF0' (temp 3-component vector of float)
+0:151        'inF1' (temp 3-component vector of float)
+0:151        'inF2' (temp 3-component vector of float)
+0:152      cosine (global 3-component vector of float)
+0:152        'inF0' (temp 3-component vector of float)
+0:153      hyp. cosine (global 3-component vector of float)
+0:153        'inF0' (temp 3-component vector of float)
 0:?       bitCount (global 3-component vector of uint)
 0:?         Constant:
 0:?           7 (const uint)
 0:?           3 (const uint)
 0:?           5 (const uint)
-0:145      cross-product (global 3-component vector of float)
-0:145        'inF0' (temp 3-component vector of float)
-0:145        'inF1' (temp 3-component vector of float)
-0:146      degrees (global 3-component vector of float)
-0:146        'inF0' (temp 3-component vector of float)
-0:147      distance (global float)
-0:147        'inF0' (temp 3-component vector of float)
-0:147        'inF1' (temp 3-component vector of float)
-0:148      dot-product (global float)
-0:148        'inF0' (temp 3-component vector of float)
-0:148        'inF1' (temp 3-component vector of float)
-0:152      exp (global 3-component vector of float)
-0:152        'inF0' (temp 3-component vector of float)
-0:153      exp2 (global 3-component vector of float)
-0:153        'inF0' (temp 3-component vector of float)
-0:154      face-forward (global 3-component vector of float)
-0:154        'inF0' (temp 3-component vector of float)
-0:154        'inF1' (temp 3-component vector of float)
-0:154        'inF2' (temp 3-component vector of float)
-0:155      findMSB (global int)
-0:155        Constant:
-0:155          7 (const int)
-0:156      findLSB (global int)
-0:156        Constant:
-0:156          7 (const int)
-0:157      Floor (global 3-component vector of float)
+0:155      cross-product (global 3-component vector of float)
+0:155        'inF0' (temp 3-component vector of float)
+0:155        'inF1' (temp 3-component vector of float)
+0:156      degrees (global 3-component vector of float)
+0:156        'inF0' (temp 3-component vector of float)
+0:157      distance (global float)
 0:157        'inF0' (temp 3-component vector of float)
-0:159      mod (global 3-component vector of float)
-0:159        'inF0' (temp 3-component vector of float)
-0:159        'inF1' (temp 3-component vector of float)
-0:160      Fraction (global 3-component vector of float)
-0:160        'inF0' (temp 3-component vector of float)
-0:161      frexp (global 3-component vector of float)
-0:161        'inF0' (temp 3-component vector of float)
-0:161        'inF1' (temp 3-component vector of float)
-0:162      fwidth (global 3-component vector of float)
+0:157        'inF1' (temp 3-component vector of float)
+0:158      dot-product (global float)
+0:158        'inF0' (temp 3-component vector of float)
+0:158        'inF1' (temp 3-component vector of float)
+0:162      exp (global 3-component vector of float)
 0:162        'inF0' (temp 3-component vector of float)
-0:163      isinf (global 3-component vector of bool)
+0:163      exp2 (global 3-component vector of float)
 0:163        'inF0' (temp 3-component vector of float)
-0:164      isnan (global 3-component vector of bool)
+0:164      face-forward (global 3-component vector of float)
 0:164        'inF0' (temp 3-component vector of float)
-0:165      ldexp (global 3-component vector of float)
-0:165        'inF0' (temp 3-component vector of float)
-0:165        'inF1' (temp 3-component vector of float)
-0:166      length (global float)
-0:166        'inF0' (temp 3-component vector of float)
-0:167      log (global 3-component vector of float)
+0:164        'inF1' (temp 3-component vector of float)
+0:164        'inF2' (temp 3-component vector of float)
+0:165      findMSB (global int)
+0:165        Constant:
+0:165          7 (const int)
+0:166      findLSB (global int)
+0:166        Constant:
+0:166          7 (const int)
+0:167      Floor (global 3-component vector of float)
 0:167        'inF0' (temp 3-component vector of float)
-0:168      vector-scale (temp 3-component vector of float)
-0:168        log2 (temp 3-component vector of float)
-0:168          'inF0' (temp 3-component vector of float)
-0:168        Constant:
-0:168          0.301030
-0:169      log2 (global 3-component vector of float)
+0:169      mod (global 3-component vector of float)
 0:169        'inF0' (temp 3-component vector of float)
-0:170      max (global 3-component vector of float)
+0:169        'inF1' (temp 3-component vector of float)
+0:170      Fraction (global 3-component vector of float)
 0:170        'inF0' (temp 3-component vector of float)
-0:170        'inF1' (temp 3-component vector of float)
-0:171      min (global 3-component vector of float)
+0:171      frexp (global 3-component vector of float)
 0:171        'inF0' (temp 3-component vector of float)
 0:171        'inF1' (temp 3-component vector of float)
-0:173      normalize (global 3-component vector of float)
+0:172      isinf (global 3-component vector of bool)
+0:172        'inF0' (temp 3-component vector of float)
+0:173      isnan (global 3-component vector of bool)
 0:173        'inF0' (temp 3-component vector of float)
-0:174      pow (global 3-component vector of float)
+0:174      ldexp (global 3-component vector of float)
 0:174        'inF0' (temp 3-component vector of float)
 0:174        'inF1' (temp 3-component vector of float)
-0:175      radians (global 3-component vector of float)
+0:175      length (global float)
 0:175        'inF0' (temp 3-component vector of float)
-0:176      reflect (global 3-component vector of float)
+0:176      log (global 3-component vector of float)
 0:176        'inF0' (temp 3-component vector of float)
-0:176        'inF1' (temp 3-component vector of float)
-0:177      refract (global 3-component vector of float)
-0:177        'inF0' (temp 3-component vector of float)
-0:177        'inF1' (temp 3-component vector of float)
+0:177      vector-scale (temp 3-component vector of float)
+0:177        log2 (temp 3-component vector of float)
+0:177          'inF0' (temp 3-component vector of float)
 0:177        Constant:
-0:177          2.000000
-0:?       bitFieldReverse (global 3-component vector of uint)
-0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:?           3 (const uint)
-0:179      roundEven (global 3-component vector of float)
+0:177          0.301030
+0:178      log2 (global 3-component vector of float)
+0:178        'inF0' (temp 3-component vector of float)
+0:179      max (global 3-component vector of float)
 0:179        'inF0' (temp 3-component vector of float)
-0:180      inverse sqrt (global 3-component vector of float)
+0:179        'inF1' (temp 3-component vector of float)
+0:180      min (global 3-component vector of float)
 0:180        'inF0' (temp 3-component vector of float)
-0:181      clamp (global 3-component vector of float)
-0:181        'inF0' (temp 3-component vector of float)
-0:181        Constant:
-0:181          0.000000
-0:181        Constant:
-0:181          1.000000
-0:182      Sign (global 3-component vector of float)
+0:180        'inF1' (temp 3-component vector of float)
+0:182      normalize (global 3-component vector of float)
 0:182        'inF0' (temp 3-component vector of float)
-0:183      sine (global 3-component vector of float)
+0:183      pow (global 3-component vector of float)
 0:183        'inF0' (temp 3-component vector of float)
-0:184      Sequence
-0:184        move second child to first child (temp 3-component vector of float)
-0:184          'inF1' (temp 3-component vector of float)
-0:184          sine (temp 3-component vector of float)
-0:184            'inF0' (temp 3-component vector of float)
-0:184        move second child to first child (temp 3-component vector of float)
-0:184          'inF2' (temp 3-component vector of float)
-0:184          cosine (temp 3-component vector of float)
-0:184            'inF0' (temp 3-component vector of float)
-0:185      hyp. sine (global 3-component vector of float)
+0:183        'inF1' (temp 3-component vector of float)
+0:184      radians (global 3-component vector of float)
+0:184        'inF0' (temp 3-component vector of float)
+0:185      reflect (global 3-component vector of float)
 0:185        'inF0' (temp 3-component vector of float)
-0:186      smoothstep (global 3-component vector of float)
+0:185        'inF1' (temp 3-component vector of float)
+0:186      refract (global 3-component vector of float)
 0:186        'inF0' (temp 3-component vector of float)
 0:186        'inF1' (temp 3-component vector of float)
-0:186        'inF2' (temp 3-component vector of float)
-0:187      sqrt (global 3-component vector of float)
-0:187        'inF0' (temp 3-component vector of float)
-0:188      step (global 3-component vector of float)
+0:186        Constant:
+0:186          2.000000
+0:?       bitFieldReverse (global 3-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:?           3 (const uint)
+0:188      roundEven (global 3-component vector of float)
 0:188        'inF0' (temp 3-component vector of float)
-0:188        'inF1' (temp 3-component vector of float)
-0:189      tangent (global 3-component vector of float)
+0:189      inverse sqrt (global 3-component vector of float)
 0:189        'inF0' (temp 3-component vector of float)
-0:190      hyp. tangent (global 3-component vector of float)
+0:190      clamp (temp 3-component vector of float)
 0:190        'inF0' (temp 3-component vector of float)
-0:192      trunc (global 3-component vector of float)
+0:190        Constant:
+0:190          0.000000
+0:190        Constant:
+0:190          1.000000
+0:191      Sign (global 3-component vector of float)
+0:191        'inF0' (temp 3-component vector of float)
+0:192      sine (global 3-component vector of float)
 0:192        'inF0' (temp 3-component vector of float)
-0:195      Branch: Return with expression
+0:193      Sequence
+0:193        move second child to first child (temp 3-component vector of float)
+0:193          'inF1' (temp 3-component vector of float)
+0:193          sine (temp 3-component vector of float)
+0:193            'inF0' (temp 3-component vector of float)
+0:193        move second child to first child (temp 3-component vector of float)
+0:193          'inF2' (temp 3-component vector of float)
+0:193          cosine (temp 3-component vector of float)
+0:193            'inF0' (temp 3-component vector of float)
+0:194      hyp. sine (global 3-component vector of float)
+0:194        'inF0' (temp 3-component vector of float)
+0:195      smoothstep (global 3-component vector of float)
+0:195        'inF0' (temp 3-component vector of float)
+0:195        'inF1' (temp 3-component vector of float)
+0:195        'inF2' (temp 3-component vector of float)
+0:196      sqrt (global 3-component vector of float)
+0:196        'inF0' (temp 3-component vector of float)
+0:197      step (global 3-component vector of float)
+0:197        'inF0' (temp 3-component vector of float)
+0:197        'inF1' (temp 3-component vector of float)
+0:198      tangent (global 3-component vector of float)
+0:198        'inF0' (temp 3-component vector of float)
+0:199      hyp. tangent (global 3-component vector of float)
+0:199        'inF0' (temp 3-component vector of float)
+0:201      trunc (global 3-component vector of float)
+0:201        'inF0' (temp 3-component vector of float)
+0:204      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:314  Function Definition: VertexShaderFunction(vf4;vf4;vf4; (temp 4-component vector of float)
-0:199    Function Parameters: 
-0:199      'inF0' (temp 4-component vector of float)
-0:199      'inF1' (temp 4-component vector of float)
-0:199      'inF2' (temp 4-component vector of float)
+0:330  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
+0:208    Function Parameters: 
+0:208      'inF0' (temp 4-component vector of float)
+0:208      'inF1' (temp 4-component vector of float)
+0:208      'inF2' (temp 4-component vector of float)
+0:208      'inU0' (temp 4-component vector of uint)
+0:208      'inU1' (temp 4-component vector of uint)
 0:?     Sequence
-0:200      all (global bool)
-0:200        'inF0' (temp 4-component vector of float)
-0:201      Absolute value (global 4-component vector of float)
-0:201        'inF0' (temp 4-component vector of float)
-0:202      arc cosine (global 4-component vector of float)
-0:202        'inF0' (temp 4-component vector of float)
-0:203      any (global bool)
-0:203        'inF0' (temp 4-component vector of float)
-0:204      arc sine (global 4-component vector of float)
-0:204        'inF0' (temp 4-component vector of float)
-0:205      arc tangent (global 4-component vector of float)
-0:205        'inF0' (temp 4-component vector of float)
-0:206      arc tangent (global 4-component vector of float)
-0:206        'inF0' (temp 4-component vector of float)
-0:206        'inF1' (temp 4-component vector of float)
-0:207      Ceiling (global 4-component vector of float)
-0:207        'inF0' (temp 4-component vector of float)
-0:208      clamp (global 4-component vector of float)
-0:208        'inF0' (temp 4-component vector of float)
-0:208        'inF1' (temp 4-component vector of float)
-0:208        'inF2' (temp 4-component vector of float)
-0:209      cosine (global 4-component vector of float)
+0:209      all (global bool)
 0:209        'inF0' (temp 4-component vector of float)
-0:210      hyp. cosine (global 4-component vector of float)
+0:210      Absolute value (global 4-component vector of float)
 0:210        'inF0' (temp 4-component vector of float)
-0:?       bitCount (global 4-component vector of uint)
-0:?         Constant:
-0:?           7 (const uint)
-0:?           3 (const uint)
-0:?           5 (const uint)
-0:?           2 (const uint)
-0:212      degrees (global 4-component vector of float)
+0:211      arc cosine (global 4-component vector of float)
+0:211        'inF0' (temp 4-component vector of float)
+0:212      any (global bool)
 0:212        'inF0' (temp 4-component vector of float)
-0:213      distance (global float)
+0:213      arc sine (global 4-component vector of float)
 0:213        'inF0' (temp 4-component vector of float)
-0:213        'inF1' (temp 4-component vector of float)
-0:214      dot-product (global float)
+0:214      floatBitsToInt (global 4-component vector of int)
 0:214        'inF0' (temp 4-component vector of float)
-0:214        'inF1' (temp 4-component vector of float)
-0:215      Construct vec4 (temp float)
-0:215        Constant:
-0:215          1.000000
-0:215        component-wise multiply (temp float)
-0:215          direct index (temp float)
-0:215            'inF0' (temp 4-component vector of float)
-0:215            Constant:
-0:215              1 (const int)
-0:215          direct index (temp float)
-0:215            'inF1' (temp 4-component vector of float)
-0:215            Constant:
-0:215              1 (const int)
-0:215        direct index (temp float)
-0:215          'inF0' (temp 4-component vector of float)
-0:215          Constant:
-0:215            2 (const int)
-0:215        direct index (temp float)
-0:215          'inF1' (temp 4-component vector of float)
-0:215          Constant:
-0:215            3 (const int)
-0:219      exp (global 4-component vector of float)
+0:215      floatBitsToUint (global 4-component vector of uint)
+0:215        'inF0' (temp 4-component vector of float)
+0:216      intBitsToFloat (global 4-component vector of float)
+0:216        'inU0' (temp 4-component vector of uint)
+0:218      arc tangent (global 4-component vector of float)
+0:218        'inF0' (temp 4-component vector of float)
+0:219      arc tangent (global 4-component vector of float)
 0:219        'inF0' (temp 4-component vector of float)
-0:220      exp2 (global 4-component vector of float)
+0:219        'inF1' (temp 4-component vector of float)
+0:220      Ceiling (global 4-component vector of float)
 0:220        'inF0' (temp 4-component vector of float)
-0:221      face-forward (global 4-component vector of float)
+0:221      clamp (global 4-component vector of float)
 0:221        'inF0' (temp 4-component vector of float)
 0:221        'inF1' (temp 4-component vector of float)
 0:221        'inF2' (temp 4-component vector of float)
-0:222      findMSB (global int)
-0:222        Constant:
-0:222          7 (const int)
-0:223      findLSB (global int)
-0:223        Constant:
-0:223          7 (const int)
-0:224      Floor (global 4-component vector of float)
-0:224        'inF0' (temp 4-component vector of float)
-0:226      mod (global 4-component vector of float)
+0:222      cosine (global 4-component vector of float)
+0:222        'inF0' (temp 4-component vector of float)
+0:223      hyp. cosine (global 4-component vector of float)
+0:223        'inF0' (temp 4-component vector of float)
+0:?       bitCount (global 4-component vector of uint)
+0:?         Constant:
+0:?           7 (const uint)
+0:?           3 (const uint)
+0:?           5 (const uint)
+0:?           2 (const uint)
+0:225      degrees (global 4-component vector of float)
+0:225        'inF0' (temp 4-component vector of float)
+0:226      distance (global float)
 0:226        'inF0' (temp 4-component vector of float)
 0:226        'inF1' (temp 4-component vector of float)
-0:227      Fraction (global 4-component vector of float)
+0:227      dot-product (global float)
 0:227        'inF0' (temp 4-component vector of float)
-0:228      frexp (global 4-component vector of float)
-0:228        'inF0' (temp 4-component vector of float)
-0:228        'inF1' (temp 4-component vector of float)
-0:229      fwidth (global 4-component vector of float)
-0:229        'inF0' (temp 4-component vector of float)
-0:230      isinf (global 4-component vector of bool)
-0:230        'inF0' (temp 4-component vector of float)
-0:231      isnan (global 4-component vector of bool)
-0:231        'inF0' (temp 4-component vector of float)
-0:232      ldexp (global 4-component vector of float)
+0:227        'inF1' (temp 4-component vector of float)
+0:228      Construct vec4 (temp float)
+0:228        Constant:
+0:228          1.000000
+0:228        component-wise multiply (temp float)
+0:228          direct index (temp float)
+0:228            'inF0' (temp 4-component vector of float)
+0:228            Constant:
+0:228              1 (const int)
+0:228          direct index (temp float)
+0:228            'inF1' (temp 4-component vector of float)
+0:228            Constant:
+0:228              1 (const int)
+0:228        direct index (temp float)
+0:228          'inF0' (temp 4-component vector of float)
+0:228          Constant:
+0:228            2 (const int)
+0:228        direct index (temp float)
+0:228          'inF1' (temp 4-component vector of float)
+0:228          Constant:
+0:228            3 (const int)
+0:232      exp (global 4-component vector of float)
 0:232        'inF0' (temp 4-component vector of float)
-0:232        'inF1' (temp 4-component vector of float)
-0:233      length (global float)
+0:233      exp2 (global 4-component vector of float)
 0:233        'inF0' (temp 4-component vector of float)
-0:234      log (global 4-component vector of float)
+0:234      face-forward (global 4-component vector of float)
 0:234        'inF0' (temp 4-component vector of float)
-0:235      vector-scale (temp 4-component vector of float)
-0:235        log2 (temp 4-component vector of float)
-0:235          'inF0' (temp 4-component vector of float)
+0:234        'inF1' (temp 4-component vector of float)
+0:234        'inF2' (temp 4-component vector of float)
+0:235      findMSB (global int)
 0:235        Constant:
-0:235          0.301030
-0:236      log2 (global 4-component vector of float)
-0:236        'inF0' (temp 4-component vector of float)
-0:237      max (global 4-component vector of float)
+0:235          7 (const int)
+0:236      findLSB (global int)
+0:236        Constant:
+0:236          7 (const int)
+0:237      Floor (global 4-component vector of float)
 0:237        'inF0' (temp 4-component vector of float)
-0:237        'inF1' (temp 4-component vector of float)
-0:238      min (global 4-component vector of float)
-0:238        'inF0' (temp 4-component vector of float)
-0:238        'inF1' (temp 4-component vector of float)
-0:240      normalize (global 4-component vector of float)
+0:239      mod (global 4-component vector of float)
+0:239        'inF0' (temp 4-component vector of float)
+0:239        'inF1' (temp 4-component vector of float)
+0:240      Fraction (global 4-component vector of float)
 0:240        'inF0' (temp 4-component vector of float)
-0:241      pow (global 4-component vector of float)
+0:241      frexp (global 4-component vector of float)
 0:241        'inF0' (temp 4-component vector of float)
 0:241        'inF1' (temp 4-component vector of float)
-0:242      radians (global 4-component vector of float)
+0:242      isinf (global 4-component vector of bool)
 0:242        'inF0' (temp 4-component vector of float)
-0:243      reflect (global 4-component vector of float)
+0:243      isnan (global 4-component vector of bool)
 0:243        'inF0' (temp 4-component vector of float)
-0:243        'inF1' (temp 4-component vector of float)
-0:244      refract (global 4-component vector of float)
+0:244      ldexp (global 4-component vector of float)
 0:244        'inF0' (temp 4-component vector of float)
 0:244        'inF1' (temp 4-component vector of float)
-0:244        Constant:
-0:244          2.000000
-0:?       bitFieldReverse (global 4-component vector of uint)
-0:?         Constant:
-0:?           1 (const uint)
-0:?           2 (const uint)
-0:?           3 (const uint)
-0:?           4 (const uint)
-0:246      roundEven (global 4-component vector of float)
+0:245      length (global float)
+0:245        'inF0' (temp 4-component vector of float)
+0:246      log (global 4-component vector of float)
 0:246        'inF0' (temp 4-component vector of float)
-0:247      inverse sqrt (global 4-component vector of float)
-0:247        'inF0' (temp 4-component vector of float)
-0:248      clamp (global 4-component vector of float)
+0:247      vector-scale (temp 4-component vector of float)
+0:247        log2 (temp 4-component vector of float)
+0:247          'inF0' (temp 4-component vector of float)
+0:247        Constant:
+0:247          0.301030
+0:248      log2 (global 4-component vector of float)
 0:248        'inF0' (temp 4-component vector of float)
-0:248        Constant:
-0:248          0.000000
-0:248        Constant:
-0:248          1.000000
-0:249      Sign (global 4-component vector of float)
+0:249      max (global 4-component vector of float)
 0:249        'inF0' (temp 4-component vector of float)
-0:250      sine (global 4-component vector of float)
+0:249        'inF1' (temp 4-component vector of float)
+0:250      min (global 4-component vector of float)
 0:250        'inF0' (temp 4-component vector of float)
-0:251      Sequence
-0:251        move second child to first child (temp 4-component vector of float)
-0:251          'inF1' (temp 4-component vector of float)
-0:251          sine (temp 4-component vector of float)
-0:251            'inF0' (temp 4-component vector of float)
-0:251        move second child to first child (temp 4-component vector of float)
-0:251          'inF2' (temp 4-component vector of float)
-0:251          cosine (temp 4-component vector of float)
-0:251            'inF0' (temp 4-component vector of float)
-0:252      hyp. sine (global 4-component vector of float)
+0:250        'inF1' (temp 4-component vector of float)
+0:252      normalize (global 4-component vector of float)
 0:252        'inF0' (temp 4-component vector of float)
-0:253      smoothstep (global 4-component vector of float)
+0:253      pow (global 4-component vector of float)
 0:253        'inF0' (temp 4-component vector of float)
 0:253        'inF1' (temp 4-component vector of float)
-0:253        'inF2' (temp 4-component vector of float)
-0:254      sqrt (global 4-component vector of float)
+0:254      radians (global 4-component vector of float)
 0:254        'inF0' (temp 4-component vector of float)
-0:255      step (global 4-component vector of float)
+0:255      reflect (global 4-component vector of float)
 0:255        'inF0' (temp 4-component vector of float)
 0:255        'inF1' (temp 4-component vector of float)
-0:256      tangent (global 4-component vector of float)
+0:256      refract (global 4-component vector of float)
 0:256        'inF0' (temp 4-component vector of float)
-0:257      hyp. tangent (global 4-component vector of float)
-0:257        'inF0' (temp 4-component vector of float)
-0:259      trunc (global 4-component vector of float)
+0:256        'inF1' (temp 4-component vector of float)
+0:256        Constant:
+0:256          2.000000
+0:?       bitFieldReverse (global 4-component vector of uint)
+0:?         Constant:
+0:?           1 (const uint)
+0:?           2 (const uint)
+0:?           3 (const uint)
+0:?           4 (const uint)
+0:258      roundEven (global 4-component vector of float)
+0:258        'inF0' (temp 4-component vector of float)
+0:259      inverse sqrt (global 4-component vector of float)
 0:259        'inF0' (temp 4-component vector of float)
-0:262      Branch: Return with expression
+0:260      clamp (temp 4-component vector of float)
+0:260        'inF0' (temp 4-component vector of float)
+0:260        Constant:
+0:260          0.000000
+0:260        Constant:
+0:260          1.000000
+0:261      Sign (global 4-component vector of float)
+0:261        'inF0' (temp 4-component vector of float)
+0:262      sine (global 4-component vector of float)
+0:262        'inF0' (temp 4-component vector of float)
+0:263      Sequence
+0:263        move second child to first child (temp 4-component vector of float)
+0:263          'inF1' (temp 4-component vector of float)
+0:263          sine (temp 4-component vector of float)
+0:263            'inF0' (temp 4-component vector of float)
+0:263        move second child to first child (temp 4-component vector of float)
+0:263          'inF2' (temp 4-component vector of float)
+0:263          cosine (temp 4-component vector of float)
+0:263            'inF0' (temp 4-component vector of float)
+0:264      hyp. sine (global 4-component vector of float)
+0:264        'inF0' (temp 4-component vector of float)
+0:265      smoothstep (global 4-component vector of float)
+0:265        'inF0' (temp 4-component vector of float)
+0:265        'inF1' (temp 4-component vector of float)
+0:265        'inF2' (temp 4-component vector of float)
+0:266      sqrt (global 4-component vector of float)
+0:266        'inF0' (temp 4-component vector of float)
+0:267      step (global 4-component vector of float)
+0:267        'inF0' (temp 4-component vector of float)
+0:267        'inF1' (temp 4-component vector of float)
+0:268      tangent (global 4-component vector of float)
+0:268        'inF0' (temp 4-component vector of float)
+0:269      hyp. tangent (global 4-component vector of float)
+0:269        'inF0' (temp 4-component vector of float)
+0:271      trunc (global 4-component vector of float)
+0:271        'inF0' (temp 4-component vector of float)
+0:274      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:323  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
-0:315    Function Parameters: 
-0:315      'inF0' (temp 2X2 matrix of float)
-0:315      'inF1' (temp 2X2 matrix of float)
-0:315      'inF2' (temp 2X2 matrix of float)
+0:339  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
+0:331    Function Parameters: 
+0:331      'inF0' (temp 2X2 matrix of float)
+0:331      'inF1' (temp 2X2 matrix of float)
+0:331      'inF2' (temp 2X2 matrix of float)
 0:?     Sequence
-0:317      all (global bool)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      Absolute value (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      arc cosine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      any (global bool)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      arc sine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      arc tangent (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      arc tangent (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      Ceiling (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      clamp (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317        'inF2' (temp 2X2 matrix of float)
-0:317      cosine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      hyp. cosine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      degrees (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      determinant (global float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      exp (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      exp2 (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      findMSB (global int)
-0:317        Constant:
-0:317          7 (const int)
-0:317      findLSB (global int)
-0:317        Constant:
-0:317          7 (const int)
-0:317      Floor (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      mod (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      Fraction (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      frexp (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      fwidth (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      ldexp (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      log (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      matrix-scale (temp 2X2 matrix of float)
-0:317        log2 (temp 2X2 matrix of float)
-0:317          'inF0' (temp 2X2 matrix of float)
-0:317        Constant:
-0:317          0.301030
-0:317      log2 (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      max (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      min (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      pow (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      radians (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      roundEven (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      inverse sqrt (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      clamp (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        Constant:
-0:317          0.000000
-0:317        Constant:
-0:317          1.000000
-0:317      Sign (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      sine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      Sequence
-0:317        move second child to first child (temp 2X2 matrix of float)
-0:317          'inF1' (temp 2X2 matrix of float)
-0:317          sine (temp 2X2 matrix of float)
-0:317            'inF0' (temp 2X2 matrix of float)
-0:317        move second child to first child (temp 2X2 matrix of float)
-0:317          'inF2' (temp 2X2 matrix of float)
-0:317          cosine (temp 2X2 matrix of float)
-0:317            'inF0' (temp 2X2 matrix of float)
-0:317      hyp. sine (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      smoothstep (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317        'inF2' (temp 2X2 matrix of float)
-0:317      sqrt (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      step (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317        'inF1' (temp 2X2 matrix of float)
-0:317      tangent (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      hyp. tangent (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      transpose (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:317      trunc (global 2X2 matrix of float)
-0:317        'inF0' (temp 2X2 matrix of float)
-0:320      Branch: Return with expression
+0:333      all (global bool)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      Absolute value (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      arc cosine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      any (global bool)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      arc sine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      arc tangent (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      arc tangent (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      Ceiling (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      clamp (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333        'inF2' (temp 2X2 matrix of float)
+0:333      cosine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      hyp. cosine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      degrees (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      determinant (global float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      exp (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      exp2 (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      findMSB (global int)
+0:333        Constant:
+0:333          7 (const int)
+0:333      findLSB (global int)
+0:333        Constant:
+0:333          7 (const int)
+0:333      Floor (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      mod (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      Fraction (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      frexp (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      ldexp (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      log (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      matrix-scale (temp 2X2 matrix of float)
+0:333        log2 (temp 2X2 matrix of float)
+0:333          'inF0' (temp 2X2 matrix of float)
+0:333        Constant:
+0:333          0.301030
+0:333      log2 (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      max (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      min (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      pow (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      radians (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      roundEven (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      inverse sqrt (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      clamp (temp 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        Constant:
+0:333          0.000000
+0:333        Constant:
+0:333          1.000000
+0:333      Sign (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      sine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      Sequence
+0:333        move second child to first child (temp 2X2 matrix of float)
+0:333          'inF1' (temp 2X2 matrix of float)
+0:333          sine (temp 2X2 matrix of float)
+0:333            'inF0' (temp 2X2 matrix of float)
+0:333        move second child to first child (temp 2X2 matrix of float)
+0:333          'inF2' (temp 2X2 matrix of float)
+0:333          cosine (temp 2X2 matrix of float)
+0:333            'inF0' (temp 2X2 matrix of float)
+0:333      hyp. sine (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      smoothstep (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333        'inF2' (temp 2X2 matrix of float)
+0:333      sqrt (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      step (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333        'inF1' (temp 2X2 matrix of float)
+0:333      tangent (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      hyp. tangent (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      transpose (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:333      trunc (global 2X2 matrix of float)
+0:333        'inF0' (temp 2X2 matrix of float)
+0:336      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:332  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
-0:324    Function Parameters: 
-0:324      'inF0' (temp 3X3 matrix of float)
-0:324      'inF1' (temp 3X3 matrix of float)
-0:324      'inF2' (temp 3X3 matrix of float)
+0:348  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
+0:340    Function Parameters: 
+0:340      'inF0' (temp 3X3 matrix of float)
+0:340      'inF1' (temp 3X3 matrix of float)
+0:340      'inF2' (temp 3X3 matrix of float)
 0:?     Sequence
-0:326      all (global bool)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      Absolute value (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      arc cosine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      any (global bool)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      arc sine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      arc tangent (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      arc tangent (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      Ceiling (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      clamp (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326        'inF2' (temp 3X3 matrix of float)
-0:326      cosine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      hyp. cosine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      degrees (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      determinant (global float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      exp (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      exp2 (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      findMSB (global int)
-0:326        Constant:
-0:326          7 (const int)
-0:326      findLSB (global int)
-0:326        Constant:
-0:326          7 (const int)
-0:326      Floor (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      mod (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      Fraction (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      frexp (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      fwidth (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      ldexp (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      log (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      matrix-scale (temp 3X3 matrix of float)
-0:326        log2 (temp 3X3 matrix of float)
-0:326          'inF0' (temp 3X3 matrix of float)
-0:326        Constant:
-0:326          0.301030
-0:326      log2 (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      max (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      min (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      pow (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      radians (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      roundEven (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      inverse sqrt (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      clamp (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        Constant:
-0:326          0.000000
-0:326        Constant:
-0:326          1.000000
-0:326      Sign (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      sine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      Sequence
-0:326        move second child to first child (temp 3X3 matrix of float)
-0:326          'inF1' (temp 3X3 matrix of float)
-0:326          sine (temp 3X3 matrix of float)
-0:326            'inF0' (temp 3X3 matrix of float)
-0:326        move second child to first child (temp 3X3 matrix of float)
-0:326          'inF2' (temp 3X3 matrix of float)
-0:326          cosine (temp 3X3 matrix of float)
-0:326            'inF0' (temp 3X3 matrix of float)
-0:326      hyp. sine (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      smoothstep (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326        'inF2' (temp 3X3 matrix of float)
-0:326      sqrt (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      step (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326        'inF1' (temp 3X3 matrix of float)
-0:326      tangent (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      hyp. tangent (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      transpose (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:326      trunc (global 3X3 matrix of float)
-0:326        'inF0' (temp 3X3 matrix of float)
-0:329      Branch: Return with expression
+0:342      all (global bool)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      Absolute value (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      arc cosine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      any (global bool)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      arc sine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      arc tangent (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      arc tangent (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      Ceiling (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      clamp (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342        'inF2' (temp 3X3 matrix of float)
+0:342      cosine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      hyp. cosine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      degrees (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      determinant (global float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      exp (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      exp2 (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      findMSB (global int)
+0:342        Constant:
+0:342          7 (const int)
+0:342      findLSB (global int)
+0:342        Constant:
+0:342          7 (const int)
+0:342      Floor (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      mod (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      Fraction (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      frexp (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      ldexp (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      log (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      matrix-scale (temp 3X3 matrix of float)
+0:342        log2 (temp 3X3 matrix of float)
+0:342          'inF0' (temp 3X3 matrix of float)
+0:342        Constant:
+0:342          0.301030
+0:342      log2 (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      max (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      min (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      pow (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      radians (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      roundEven (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      inverse sqrt (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      clamp (temp 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        Constant:
+0:342          0.000000
+0:342        Constant:
+0:342          1.000000
+0:342      Sign (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      sine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      Sequence
+0:342        move second child to first child (temp 3X3 matrix of float)
+0:342          'inF1' (temp 3X3 matrix of float)
+0:342          sine (temp 3X3 matrix of float)
+0:342            'inF0' (temp 3X3 matrix of float)
+0:342        move second child to first child (temp 3X3 matrix of float)
+0:342          'inF2' (temp 3X3 matrix of float)
+0:342          cosine (temp 3X3 matrix of float)
+0:342            'inF0' (temp 3X3 matrix of float)
+0:342      hyp. sine (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      smoothstep (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342        'inF2' (temp 3X3 matrix of float)
+0:342      sqrt (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      step (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342        'inF1' (temp 3X3 matrix of float)
+0:342      tangent (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      hyp. tangent (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      transpose (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:342      trunc (global 3X3 matrix of float)
+0:342        'inF0' (temp 3X3 matrix of float)
+0:345      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -2113,129 +2151,127 @@ Shader version: 450
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:353  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
-0:333    Function Parameters: 
-0:333      'inF0' (temp 4X4 matrix of float)
-0:333      'inF1' (temp 4X4 matrix of float)
-0:333      'inF2' (temp 4X4 matrix of float)
+0:369  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
+0:349    Function Parameters: 
+0:349      'inF0' (temp 4X4 matrix of float)
+0:349      'inF1' (temp 4X4 matrix of float)
+0:349      'inF2' (temp 4X4 matrix of float)
 0:?     Sequence
-0:335      all (global bool)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      Absolute value (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      arc cosine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      any (global bool)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      arc sine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      arc tangent (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      arc tangent (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      Ceiling (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      clamp (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335        'inF2' (temp 4X4 matrix of float)
-0:335      cosine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      hyp. cosine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      degrees (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      determinant (global float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      exp (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      exp2 (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      findMSB (global int)
-0:335        Constant:
-0:335          7 (const int)
-0:335      findLSB (global int)
-0:335        Constant:
-0:335          7 (const int)
-0:335      Floor (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      mod (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      Fraction (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      frexp (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      fwidth (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      ldexp (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      log (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      matrix-scale (temp 4X4 matrix of float)
-0:335        log2 (temp 4X4 matrix of float)
-0:335          'inF0' (temp 4X4 matrix of float)
-0:335        Constant:
-0:335          0.301030
-0:335      log2 (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      max (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      min (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      pow (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      radians (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      roundEven (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      inverse sqrt (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      clamp (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        Constant:
-0:335          0.000000
-0:335        Constant:
-0:335          1.000000
-0:335      Sign (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      sine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      Sequence
-0:335        move second child to first child (temp 4X4 matrix of float)
-0:335          'inF1' (temp 4X4 matrix of float)
-0:335          sine (temp 4X4 matrix of float)
-0:335            'inF0' (temp 4X4 matrix of float)
-0:335        move second child to first child (temp 4X4 matrix of float)
-0:335          'inF2' (temp 4X4 matrix of float)
-0:335          cosine (temp 4X4 matrix of float)
-0:335            'inF0' (temp 4X4 matrix of float)
-0:335      hyp. sine (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      smoothstep (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335        'inF2' (temp 4X4 matrix of float)
-0:335      sqrt (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      step (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335        'inF1' (temp 4X4 matrix of float)
-0:335      tangent (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      hyp. tangent (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      transpose (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:335      trunc (global 4X4 matrix of float)
-0:335        'inF0' (temp 4X4 matrix of float)
-0:338      Branch: Return with expression
+0:351      all (global bool)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      Absolute value (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      arc cosine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      any (global bool)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      arc sine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      arc tangent (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      arc tangent (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      Ceiling (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      clamp (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351        'inF2' (temp 4X4 matrix of float)
+0:351      cosine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      hyp. cosine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      degrees (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      determinant (global float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      exp (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      exp2 (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      findMSB (global int)
+0:351        Constant:
+0:351          7 (const int)
+0:351      findLSB (global int)
+0:351        Constant:
+0:351          7 (const int)
+0:351      Floor (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      mod (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      Fraction (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      frexp (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      ldexp (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      log (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      matrix-scale (temp 4X4 matrix of float)
+0:351        log2 (temp 4X4 matrix of float)
+0:351          'inF0' (temp 4X4 matrix of float)
+0:351        Constant:
+0:351          0.301030
+0:351      log2 (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      max (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      min (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      pow (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      radians (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      roundEven (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      inverse sqrt (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      clamp (temp 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        Constant:
+0:351          0.000000
+0:351        Constant:
+0:351          1.000000
+0:351      Sign (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      sine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      Sequence
+0:351        move second child to first child (temp 4X4 matrix of float)
+0:351          'inF1' (temp 4X4 matrix of float)
+0:351          sine (temp 4X4 matrix of float)
+0:351            'inF0' (temp 4X4 matrix of float)
+0:351        move second child to first child (temp 4X4 matrix of float)
+0:351          'inF2' (temp 4X4 matrix of float)
+0:351          cosine (temp 4X4 matrix of float)
+0:351            'inF0' (temp 4X4 matrix of float)
+0:351      hyp. sine (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      smoothstep (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351        'inF2' (temp 4X4 matrix of float)
+0:351      sqrt (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      step (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351        'inF1' (temp 4X4 matrix of float)
+0:351      tangent (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      hyp. tangent (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      transpose (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:351      trunc (global 4X4 matrix of float)
+0:351        'inF0' (temp 4X4 matrix of float)
+0:354      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
@@ -2253,173 +2289,173 @@ Shader version: 450
 0:?           4.000000
 0:?           4.000000
 0:?           4.000000
-0:360  Function Definition: TestGenMul(f1;f1;vf2;vf2;mf22;mf22; (temp void)
-0:356    Function Parameters: 
-0:356      'inF0' (temp float)
-0:356      'inF1' (temp float)
-0:356      'inFV0' (temp 2-component vector of float)
-0:356      'inFV1' (temp 2-component vector of float)
-0:356      'inFM0' (temp 2X2 matrix of float)
-0:356      'inFM1' (temp 2X2 matrix of float)
+0:376  Function Definition: TestGenMul(f1;f1;vf2;vf2;mf22;mf22; (temp void)
+0:372    Function Parameters: 
+0:372      'inF0' (temp float)
+0:372      'inF1' (temp float)
+0:372      'inFV0' (temp 2-component vector of float)
+0:372      'inFV1' (temp 2-component vector of float)
+0:372      'inFM0' (temp 2X2 matrix of float)
+0:372      'inFM1' (temp 2X2 matrix of float)
 0:?     Sequence
-0:357      move second child to first child (temp float)
-0:357        'r0' (temp float)
-0:357        component-wise multiply (temp float)
-0:357          'inF0' (temp float)
-0:357          'inF1' (temp float)
-0:357      move second child to first child (temp 2-component vector of float)
-0:357        'r1' (temp 2-component vector of float)
-0:357        vector-scale (temp 2-component vector of float)
-0:357          'inFV0' (temp 2-component vector of float)
-0:357          'inF0' (temp float)
-0:357      move second child to first child (temp 2-component vector of float)
-0:357        'r2' (temp 2-component vector of float)
-0:357        vector-scale (temp 2-component vector of float)
-0:357          'inF0' (temp float)
-0:357          'inFV0' (temp 2-component vector of float)
-0:357      move second child to first child (temp float)
-0:357        'r3' (temp float)
-0:357        dot-product (global float)
-0:357          'inFV0' (temp 2-component vector of float)
-0:357          'inFV1' (temp 2-component vector of float)
-0:357      move second child to first child (temp 2-component vector of float)
-0:357        'r4' (temp 2-component vector of float)
-0:357        matrix-times-vector (temp 2-component vector of float)
-0:357          'inFM0' (temp 2X2 matrix of float)
-0:357          'inFV0' (temp 2-component vector of float)
-0:357      move second child to first child (temp 2-component vector of float)
-0:357        'r5' (temp 2-component vector of float)
-0:357        vector-times-matrix (temp 2-component vector of float)
-0:357          'inFV0' (temp 2-component vector of float)
-0:357          'inFM0' (temp 2X2 matrix of float)
-0:357      move second child to first child (temp 2X2 matrix of float)
-0:357        'r6' (temp 2X2 matrix of float)
-0:357        matrix-scale (temp 2X2 matrix of float)
-0:357          'inFM0' (temp 2X2 matrix of float)
-0:357          'inF0' (temp float)
-0:357      move second child to first child (temp 2X2 matrix of float)
-0:357        'r7' (temp 2X2 matrix of float)
-0:357        matrix-scale (temp 2X2 matrix of float)
-0:357          'inF0' (temp float)
-0:357          'inFM0' (temp 2X2 matrix of float)
-0:357      move second child to first child (temp 2X2 matrix of float)
-0:357        'r8' (temp 2X2 matrix of float)
-0:357        matrix-multiply (temp 2X2 matrix of float)
-0:357          'inFM0' (temp 2X2 matrix of float)
-0:357          'inFM1' (temp 2X2 matrix of float)
-0:367  Function Definition: TestGenMul(f1;f1;vf3;vf3;mf33;mf33; (temp void)
-0:363    Function Parameters: 
-0:363      'inF0' (temp float)
-0:363      'inF1' (temp float)
-0:363      'inFV0' (temp 3-component vector of float)
-0:363      'inFV1' (temp 3-component vector of float)
-0:363      'inFM0' (temp 3X3 matrix of float)
-0:363      'inFM1' (temp 3X3 matrix of float)
+0:373      move second child to first child (temp float)
+0:373        'r0' (temp float)
+0:373        component-wise multiply (temp float)
+0:373          'inF0' (temp float)
+0:373          'inF1' (temp float)
+0:373      move second child to first child (temp 2-component vector of float)
+0:373        'r1' (temp 2-component vector of float)
+0:373        vector-scale (temp 2-component vector of float)
+0:373          'inFV0' (temp 2-component vector of float)
+0:373          'inF0' (temp float)
+0:373      move second child to first child (temp 2-component vector of float)
+0:373        'r2' (temp 2-component vector of float)
+0:373        vector-scale (temp 2-component vector of float)
+0:373          'inF0' (temp float)
+0:373          'inFV0' (temp 2-component vector of float)
+0:373      move second child to first child (temp float)
+0:373        'r3' (temp float)
+0:373        dot-product (global float)
+0:373          'inFV0' (temp 2-component vector of float)
+0:373          'inFV1' (temp 2-component vector of float)
+0:373      move second child to first child (temp 2-component vector of float)
+0:373        'r4' (temp 2-component vector of float)
+0:373        matrix-times-vector (temp 2-component vector of float)
+0:373          'inFM0' (temp 2X2 matrix of float)
+0:373          'inFV0' (temp 2-component vector of float)
+0:373      move second child to first child (temp 2-component vector of float)
+0:373        'r5' (temp 2-component vector of float)
+0:373        vector-times-matrix (temp 2-component vector of float)
+0:373          'inFV0' (temp 2-component vector of float)
+0:373          'inFM0' (temp 2X2 matrix of float)
+0:373      move second child to first child (temp 2X2 matrix of float)
+0:373        'r6' (temp 2X2 matrix of float)
+0:373        matrix-scale (temp 2X2 matrix of float)
+0:373          'inFM0' (temp 2X2 matrix of float)
+0:373          'inF0' (temp float)
+0:373      move second child to first child (temp 2X2 matrix of float)
+0:373        'r7' (temp 2X2 matrix of float)
+0:373        matrix-scale (temp 2X2 matrix of float)
+0:373          'inF0' (temp float)
+0:373          'inFM0' (temp 2X2 matrix of float)
+0:373      move second child to first child (temp 2X2 matrix of float)
+0:373        'r8' (temp 2X2 matrix of float)
+0:373        matrix-multiply (temp 2X2 matrix of float)
+0:373          'inFM0' (temp 2X2 matrix of float)
+0:373          'inFM1' (temp 2X2 matrix of float)
+0:383  Function Definition: TestGenMul(f1;f1;vf3;vf3;mf33;mf33; (temp void)
+0:379    Function Parameters: 
+0:379      'inF0' (temp float)
+0:379      'inF1' (temp float)
+0:379      'inFV0' (temp 3-component vector of float)
+0:379      'inFV1' (temp 3-component vector of float)
+0:379      'inFM0' (temp 3X3 matrix of float)
+0:379      'inFM1' (temp 3X3 matrix of float)
 0:?     Sequence
-0:364      move second child to first child (temp float)
-0:364        'r0' (temp float)
-0:364        component-wise multiply (temp float)
-0:364          'inF0' (temp float)
-0:364          'inF1' (temp float)
-0:364      move second child to first child (temp 3-component vector of float)
-0:364        'r1' (temp 3-component vector of float)
-0:364        vector-scale (temp 3-component vector of float)
-0:364          'inFV0' (temp 3-component vector of float)
-0:364          'inF0' (temp float)
-0:364      move second child to first child (temp 3-component vector of float)
-0:364        'r2' (temp 3-component vector of float)
-0:364        vector-scale (temp 3-component vector of float)
-0:364          'inF0' (temp float)
-0:364          'inFV0' (temp 3-component vector of float)
-0:364      move second child to first child (temp float)
-0:364        'r3' (temp float)
-0:364        dot-product (global float)
-0:364          'inFV0' (temp 3-component vector of float)
-0:364          'inFV1' (temp 3-component vector of float)
-0:364      move second child to first child (temp 3-component vector of float)
-0:364        'r4' (temp 3-component vector of float)
-0:364        matrix-times-vector (temp 3-component vector of float)
-0:364          'inFM0' (temp 3X3 matrix of float)
-0:364          'inFV0' (temp 3-component vector of float)
-0:364      move second child to first child (temp 3-component vector of float)
-0:364        'r5' (temp 3-component vector of float)
-0:364        vector-times-matrix (temp 3-component vector of float)
-0:364          'inFV0' (temp 3-component vector of float)
-0:364          'inFM0' (temp 3X3 matrix of float)
-0:364      move second child to first child (temp 3X3 matrix of float)
-0:364        'r6' (temp 3X3 matrix of float)
-0:364        matrix-scale (temp 3X3 matrix of float)
-0:364          'inFM0' (temp 3X3 matrix of float)
-0:364          'inF0' (temp float)
-0:364      move second child to first child (temp 3X3 matrix of float)
-0:364        'r7' (temp 3X3 matrix of float)
-0:364        matrix-scale (temp 3X3 matrix of float)
-0:364          'inF0' (temp float)
-0:364          'inFM0' (temp 3X3 matrix of float)
-0:364      move second child to first child (temp 3X3 matrix of float)
-0:364        'r8' (temp 3X3 matrix of float)
-0:364        matrix-multiply (temp 3X3 matrix of float)
-0:364          'inFM0' (temp 3X3 matrix of float)
-0:364          'inFM1' (temp 3X3 matrix of float)
-0:373  Function Definition: TestGenMul(f1;f1;vf4;vf4;mf44;mf44; (temp void)
-0:370    Function Parameters: 
-0:370      'inF0' (temp float)
-0:370      'inF1' (temp float)
-0:370      'inFV0' (temp 4-component vector of float)
-0:370      'inFV1' (temp 4-component vector of float)
-0:370      'inFM0' (temp 4X4 matrix of float)
-0:370      'inFM1' (temp 4X4 matrix of float)
+0:380      move second child to first child (temp float)
+0:380        'r0' (temp float)
+0:380        component-wise multiply (temp float)
+0:380          'inF0' (temp float)
+0:380          'inF1' (temp float)
+0:380      move second child to first child (temp 3-component vector of float)
+0:380        'r1' (temp 3-component vector of float)
+0:380        vector-scale (temp 3-component vector of float)
+0:380          'inFV0' (temp 3-component vector of float)
+0:380          'inF0' (temp float)
+0:380      move second child to first child (temp 3-component vector of float)
+0:380        'r2' (temp 3-component vector of float)
+0:380        vector-scale (temp 3-component vector of float)
+0:380          'inF0' (temp float)
+0:380          'inFV0' (temp 3-component vector of float)
+0:380      move second child to first child (temp float)
+0:380        'r3' (temp float)
+0:380        dot-product (global float)
+0:380          'inFV0' (temp 3-component vector of float)
+0:380          'inFV1' (temp 3-component vector of float)
+0:380      move second child to first child (temp 3-component vector of float)
+0:380        'r4' (temp 3-component vector of float)
+0:380        matrix-times-vector (temp 3-component vector of float)
+0:380          'inFM0' (temp 3X3 matrix of float)
+0:380          'inFV0' (temp 3-component vector of float)
+0:380      move second child to first child (temp 3-component vector of float)
+0:380        'r5' (temp 3-component vector of float)
+0:380        vector-times-matrix (temp 3-component vector of float)
+0:380          'inFV0' (temp 3-component vector of float)
+0:380          'inFM0' (temp 3X3 matrix of float)
+0:380      move second child to first child (temp 3X3 matrix of float)
+0:380        'r6' (temp 3X3 matrix of float)
+0:380        matrix-scale (temp 3X3 matrix of float)
+0:380          'inFM0' (temp 3X3 matrix of float)
+0:380          'inF0' (temp float)
+0:380      move second child to first child (temp 3X3 matrix of float)
+0:380        'r7' (temp 3X3 matrix of float)
+0:380        matrix-scale (temp 3X3 matrix of float)
+0:380          'inF0' (temp float)
+0:380          'inFM0' (temp 3X3 matrix of float)
+0:380      move second child to first child (temp 3X3 matrix of float)
+0:380        'r8' (temp 3X3 matrix of float)
+0:380        matrix-multiply (temp 3X3 matrix of float)
+0:380          'inFM0' (temp 3X3 matrix of float)
+0:380          'inFM1' (temp 3X3 matrix of float)
+0:389  Function Definition: TestGenMul(f1;f1;vf4;vf4;mf44;mf44; (temp void)
+0:386    Function Parameters: 
+0:386      'inF0' (temp float)
+0:386      'inF1' (temp float)
+0:386      'inFV0' (temp 4-component vector of float)
+0:386      'inFV1' (temp 4-component vector of float)
+0:386      'inFM0' (temp 4X4 matrix of float)
+0:386      'inFM1' (temp 4X4 matrix of float)
 0:?     Sequence
-0:371      move second child to first child (temp float)
-0:371        'r0' (temp float)
-0:371        component-wise multiply (temp float)
-0:371          'inF0' (temp float)
-0:371          'inF1' (temp float)
-0:371      move second child to first child (temp 4-component vector of float)
-0:371        'r1' (temp 4-component vector of float)
-0:371        vector-scale (temp 4-component vector of float)
-0:371          'inFV0' (temp 4-component vector of float)
-0:371          'inF0' (temp float)
-0:371      move second child to first child (temp 4-component vector of float)
-0:371        'r2' (temp 4-component vector of float)
-0:371        vector-scale (temp 4-component vector of float)
-0:371          'inF0' (temp float)
-0:371          'inFV0' (temp 4-component vector of float)
-0:371      move second child to first child (temp float)
-0:371        'r3' (temp float)
-0:371        dot-product (global float)
-0:371          'inFV0' (temp 4-component vector of float)
-0:371          'inFV1' (temp 4-component vector of float)
-0:371      move second child to first child (temp 4-component vector of float)
-0:371        'r4' (temp 4-component vector of float)
-0:371        matrix-times-vector (temp 4-component vector of float)
-0:371          'inFM0' (temp 4X4 matrix of float)
-0:371          'inFV0' (temp 4-component vector of float)
-0:371      move second child to first child (temp 4-component vector of float)
-0:371        'r5' (temp 4-component vector of float)
-0:371        vector-times-matrix (temp 4-component vector of float)
-0:371          'inFV0' (temp 4-component vector of float)
-0:371          'inFM0' (temp 4X4 matrix of float)
-0:371      move second child to first child (temp 4X4 matrix of float)
-0:371        'r6' (temp 4X4 matrix of float)
-0:371        matrix-scale (temp 4X4 matrix of float)
-0:371          'inFM0' (temp 4X4 matrix of float)
-0:371          'inF0' (temp float)
-0:371      move second child to first child (temp 4X4 matrix of float)
-0:371        'r7' (temp 4X4 matrix of float)
-0:371        matrix-scale (temp 4X4 matrix of float)
-0:371          'inF0' (temp float)
-0:371          'inFM0' (temp 4X4 matrix of float)
-0:371      move second child to first child (temp 4X4 matrix of float)
-0:371        'r8' (temp 4X4 matrix of float)
-0:371        matrix-multiply (temp 4X4 matrix of float)
-0:371          'inFM0' (temp 4X4 matrix of float)
-0:371          'inFM1' (temp 4X4 matrix of float)
+0:387      move second child to first child (temp float)
+0:387        'r0' (temp float)
+0:387        component-wise multiply (temp float)
+0:387          'inF0' (temp float)
+0:387          'inF1' (temp float)
+0:387      move second child to first child (temp 4-component vector of float)
+0:387        'r1' (temp 4-component vector of float)
+0:387        vector-scale (temp 4-component vector of float)
+0:387          'inFV0' (temp 4-component vector of float)
+0:387          'inF0' (temp float)
+0:387      move second child to first child (temp 4-component vector of float)
+0:387        'r2' (temp 4-component vector of float)
+0:387        vector-scale (temp 4-component vector of float)
+0:387          'inF0' (temp float)
+0:387          'inFV0' (temp 4-component vector of float)
+0:387      move second child to first child (temp float)
+0:387        'r3' (temp float)
+0:387        dot-product (global float)
+0:387          'inFV0' (temp 4-component vector of float)
+0:387          'inFV1' (temp 4-component vector of float)
+0:387      move second child to first child (temp 4-component vector of float)
+0:387        'r4' (temp 4-component vector of float)
+0:387        matrix-times-vector (temp 4-component vector of float)
+0:387          'inFM0' (temp 4X4 matrix of float)
+0:387          'inFV0' (temp 4-component vector of float)
+0:387      move second child to first child (temp 4-component vector of float)
+0:387        'r5' (temp 4-component vector of float)
+0:387        vector-times-matrix (temp 4-component vector of float)
+0:387          'inFV0' (temp 4-component vector of float)
+0:387          'inFM0' (temp 4X4 matrix of float)
+0:387      move second child to first child (temp 4X4 matrix of float)
+0:387        'r6' (temp 4X4 matrix of float)
+0:387        matrix-scale (temp 4X4 matrix of float)
+0:387          'inFM0' (temp 4X4 matrix of float)
+0:387          'inF0' (temp float)
+0:387      move second child to first child (temp 4X4 matrix of float)
+0:387        'r7' (temp 4X4 matrix of float)
+0:387        matrix-scale (temp 4X4 matrix of float)
+0:387          'inF0' (temp float)
+0:387          'inFM0' (temp 4X4 matrix of float)
+0:387      move second child to first child (temp 4X4 matrix of float)
+0:387        'r8' (temp 4X4 matrix of float)
+0:387        matrix-multiply (temp 4X4 matrix of float)
+0:387          'inFM0' (temp 4X4 matrix of float)
+0:387          'inFM1' (temp 4X4 matrix of float)
 0:?   Linker Objects
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 1064
+// Id's are bound by 1082
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -2449,60 +2485,64 @@ Shader version: 450
                               Name 43  "inFM0"
                               Name 44  "inFM1"
                               Name 47  "inF0"
-                              Name 62  "inF1"
-                              Name 69  "inF2"
-                              Name 97  "ResType"
-                              Name 166  "inF0"
-                              Name 180  "inF1"
-                              Name 187  "inF2"
-                              Name 225  "ResType"
-                              Name 306  "inF0"
-                              Name 320  "inF1"
-                              Name 327  "inF2"
-                              Name 368  "ResType"
-                              Name 448  "inF0"
-                              Name 462  "inF1"
-                              Name 469  "inF2"
-                              Name 515  "ResType"
-                              Name 596  "inF0"
-                              Name 610  "inF1"
-                              Name 617  "inF2"
-                              Name 648  "ResType"
-                              Name 713  "inF0"
-                              Name 727  "inF1"
-                              Name 734  "inF2"
-                              Name 768  "ResType"
-                              Name 833  "inF0"
-                              Name 847  "inF1"
-                              Name 854  "inF2"
-                              Name 891  "ResType"
-                              Name 956  "r0"
-                              Name 960  "r1"
-                              Name 964  "r2"
-                              Name 968  "r3"
-                              Name 972  "r4"
-                              Name 976  "r5"
-                              Name 980  "r6"
-                              Name 984  "r7"
-                              Name 988  "r8"
-                              Name 992  "r0"
-                              Name 996  "r1"
-                              Name 1000  "r2"
-                              Name 1004  "r3"
-                              Name 1008  "r4"
-                              Name 1012  "r5"
-                              Name 1016  "r6"
-                              Name 1020  "r7"
-                              Name 1024  "r8"
-                              Name 1028  "r0"
-                              Name 1032  "r1"
-                              Name 1036  "r2"
-                              Name 1040  "r3"
-                              Name 1044  "r4"
-                              Name 1048  "r5"
-                              Name 1052  "r6"
-                              Name 1056  "r7"
-                              Name 1060  "r8"
+                              Name 66  "inU0"
+                              Name 72  "inF1"
+                              Name 79  "inF2"
+                              Name 105  "ResType"
+                              Name 172  "inF0"
+                              Name 190  "inU0"
+                              Name 196  "inF1"
+                              Name 203  "inF2"
+                              Name 239  "ResType"
+                              Name 318  "inF0"
+                              Name 336  "inU0"
+                              Name 342  "inF1"
+                              Name 349  "inF2"
+                              Name 388  "ResType"
+                              Name 466  "inF0"
+                              Name 484  "inU0"
+                              Name 490  "inF1"
+                              Name 497  "inF2"
+                              Name 541  "ResType"
+                              Name 620  "inF0"
+                              Name 634  "inF1"
+                              Name 641  "inF2"
+                              Name 672  "ResType"
+                              Name 735  "inF0"
+                              Name 749  "inF1"
+                              Name 756  "inF2"
+                              Name 790  "ResType"
+                              Name 853  "inF0"
+                              Name 867  "inF1"
+                              Name 874  "inF2"
+                              Name 911  "ResType"
+                              Name 974  "r0"
+                              Name 978  "r1"
+                              Name 982  "r2"
+                              Name 986  "r3"
+                              Name 990  "r4"
+                              Name 994  "r5"
+                              Name 998  "r6"
+                              Name 1002  "r7"
+                              Name 1006  "r8"
+                              Name 1010  "r0"
+                              Name 1014  "r1"
+                              Name 1018  "r2"
+                              Name 1022  "r3"
+                              Name 1026  "r4"
+                              Name 1030  "r5"
+                              Name 1034  "r6"
+                              Name 1038  "r7"
+                              Name 1042  "r8"
+                              Name 1046  "r0"
+                              Name 1050  "r1"
+                              Name 1054  "r2"
+                              Name 1058  "r3"
+                              Name 1062  "r4"
+                              Name 1066  "r5"
+                              Name 1070  "r6"
+                              Name 1074  "r7"
+                              Name 1078  "r8"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -2523,75 +2563,83 @@ Shader version: 450
               37:             TypePointer Function 36
               38:             TypeFunction 2 7(ptr) 7(ptr) 35(ptr) 35(ptr) 37(ptr) 37(ptr)
               49:             TypeBool
-              76:             TypeInt 32 0
-              77:     76(int) Constant 7
-              85:             TypeInt 32 1
-              86:     85(int) Constant 7
-     97(ResType):             TypeStruct 6(float) 85(int)
-             114:    6(float) Constant 1050288283
-             129:     76(int) Constant 2
-             136:    6(float) Constant 0
-             137:    6(float) Constant 1065353216
-             194:             TypeVector 76(int) 2
-             195:     76(int) Constant 3
-             196:  194(ivec2) ConstantComposite 77 195
-             224:             TypeVector 85(int) 2
-    225(ResType):             TypeStruct 8(fvec2) 224(ivec2)
-             232:             TypeVector 49(bool) 2
-             266:    6(float) Constant 1073741824
-             268:     76(int) Constant 1
-             269:  194(ivec2) ConstantComposite 268 129
-             304:    8(fvec2) ConstantComposite 137 266
-             334:             TypeVector 76(int) 3
-             335:     76(int) Constant 5
-             336:  334(ivec3) ConstantComposite 77 195 335
-             367:             TypeVector 85(int) 3
-    368(ResType):             TypeStruct 21(fvec3) 367(ivec3)
-             375:             TypeVector 49(bool) 3
-             410:  334(ivec3) ConstantComposite 268 129 195
-             445:    6(float) Constant 1077936128
-             446:   21(fvec3) ConstantComposite 137 266 445
-             476:             TypeVector 76(int) 4
-             477:  476(ivec4) ConstantComposite 77 195 335 129
-             514:             TypeVector 85(int) 4
-    515(ResType):             TypeStruct 34(fvec4) 514(ivec4)
-             522:             TypeVector 49(bool) 4
-             557:     76(int) Constant 4
-             558:  476(ivec4) ConstantComposite 268 129 195 557
-             593:    6(float) Constant 1082130432
-             594:   34(fvec4) ConstantComposite 137 266 445 593
-    648(ResType):             TypeStruct 10 224(ivec2)
-             710:    8(fvec2) ConstantComposite 266 266
-             711:          10 ConstantComposite 710 710
-    768(ResType):             TypeStruct 23 367(ivec3)
-             830:   21(fvec3) ConstantComposite 445 445 445
-             831:          23 ConstantComposite 830 830 830
-    891(ResType):             TypeStruct 36 514(ivec4)
-             953:   34(fvec4) ConstantComposite 593 593 593 593
-             954:          36 ConstantComposite 953 953 953 953
+              60:             TypeInt 32 1
+              63:             TypeInt 32 0
+              65:             TypePointer Function 63(int)
+              86:     63(int) Constant 7
+              94:     60(int) Constant 7
+    105(ResType):             TypeStruct 6(float) 60(int)
+             120:    6(float) Constant 1050288283
+             135:     63(int) Constant 2
+             142:    6(float) Constant 0
+             143:    6(float) Constant 1065353216
+             184:             TypeVector 60(int) 2
+             187:             TypeVector 63(int) 2
+             189:             TypePointer Function 187(ivec2)
+             210:     63(int) Constant 3
+             211:  187(ivec2) ConstantComposite 86 210
+    239(ResType):             TypeStruct 8(fvec2) 184(ivec2)
+             244:             TypeVector 49(bool) 2
+             278:    6(float) Constant 1073741824
+             280:     63(int) Constant 1
+             281:  187(ivec2) ConstantComposite 280 135
+             316:    8(fvec2) ConstantComposite 143 278
+             330:             TypeVector 60(int) 3
+             333:             TypeVector 63(int) 3
+             335:             TypePointer Function 333(ivec3)
+             356:     63(int) Constant 5
+             357:  333(ivec3) ConstantComposite 86 210 356
+    388(ResType):             TypeStruct 21(fvec3) 330(ivec3)
+             393:             TypeVector 49(bool) 3
+             428:  333(ivec3) ConstantComposite 280 135 210
+             463:    6(float) Constant 1077936128
+             464:   21(fvec3) ConstantComposite 143 278 463
+             478:             TypeVector 60(int) 4
+             481:             TypeVector 63(int) 4
+             483:             TypePointer Function 481(ivec4)
+             504:  481(ivec4) ConstantComposite 86 210 356 135
+    541(ResType):             TypeStruct 34(fvec4) 478(ivec4)
+             546:             TypeVector 49(bool) 4
+             581:     63(int) Constant 4
+             582:  481(ivec4) ConstantComposite 280 135 210 581
+             617:    6(float) Constant 1082130432
+             618:   34(fvec4) ConstantComposite 143 278 463 617
+    672(ResType):             TypeStruct 10 184(ivec2)
+             732:    8(fvec2) ConstantComposite 278 278
+             733:          10 ConstantComposite 732 732
+    790(ResType):             TypeStruct 23 330(ivec3)
+             850:   21(fvec3) ConstantComposite 463 463 463
+             851:          23 ConstantComposite 850 850 850
+    911(ResType):             TypeStruct 36 478(ivec4)
+             971:   34(fvec4) ConstantComposite 617 617 617 617
+             972:          36 ConstantComposite 971 971 971 971
 4(VertexShaderFunction):           2 Function None 3
                5:             Label
         47(inF0):      7(ptr) Variable Function
-        62(inF1):      7(ptr) Variable Function
-        69(inF2):      7(ptr) Variable Function
-       166(inF0):      9(ptr) Variable Function
-       180(inF1):      9(ptr) Variable Function
-       187(inF2):      9(ptr) Variable Function
-       306(inF0):     22(ptr) Variable Function
-       320(inF1):     22(ptr) Variable Function
-       327(inF2):     22(ptr) Variable Function
-       448(inF0):     35(ptr) Variable Function
-       462(inF1):     35(ptr) Variable Function
-       469(inF2):     35(ptr) Variable Function
-       596(inF0):     11(ptr) Variable Function
-       610(inF1):     11(ptr) Variable Function
-       617(inF2):     11(ptr) Variable Function
-       713(inF0):     24(ptr) Variable Function
-       727(inF1):     24(ptr) Variable Function
-       734(inF2):     24(ptr) Variable Function
-       833(inF0):     37(ptr) Variable Function
-       847(inF1):     37(ptr) Variable Function
-       854(inF2):     37(ptr) Variable Function
+        66(inU0):     65(ptr) Variable Function
+        72(inF1):      7(ptr) Variable Function
+        79(inF2):      7(ptr) Variable Function
+       172(inF0):      9(ptr) Variable Function
+       190(inU0):    189(ptr) Variable Function
+       196(inF1):      9(ptr) Variable Function
+       203(inF2):      9(ptr) Variable Function
+       318(inF0):     22(ptr) Variable Function
+       336(inU0):    335(ptr) Variable Function
+       342(inF1):     22(ptr) Variable Function
+       349(inF2):     22(ptr) Variable Function
+       466(inF0):     35(ptr) Variable Function
+       484(inU0):    483(ptr) Variable Function
+       490(inF1):     35(ptr) Variable Function
+       497(inF2):     35(ptr) Variable Function
+       620(inF0):     11(ptr) Variable Function
+       634(inF1):     11(ptr) Variable Function
+       641(inF2):     11(ptr) Variable Function
+       735(inF0):     24(ptr) Variable Function
+       749(inF1):     24(ptr) Variable Function
+       756(inF2):     24(ptr) Variable Function
+       853(inF0):     37(ptr) Variable Function
+       867(inF1):     37(ptr) Variable Function
+       874(inF2):     37(ptr) Variable Function
               48:    6(float) Load 47(inF0)
               50:    49(bool) All 48
               51:    6(float) Load 47(inF0)
@@ -2603,103 +2651,107 @@ Shader version: 450
               57:    6(float) Load 47(inF0)
               58:    6(float) ExtInst 1(GLSL.std.450) 16(Asin) 57
               59:    6(float) Load 47(inF0)
-              60:    6(float) ExtInst 1(GLSL.std.450) 18(Atan) 59
-              61:    6(float) Load 47(inF0)
-              63:    6(float) Load 62(inF1)
-              64:    6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 61 63
-              65:    6(float) Load 47(inF0)
-              66:    6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 65
-              67:    6(float) Load 47(inF0)
-              68:    6(float) Load 62(inF1)
-              70:    6(float) Load 69(inF2)
-              71:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 67 68 70
-              72:    6(float) Load 47(inF0)
-              73:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 72
-              74:    6(float) Load 47(inF0)
-              75:    6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 74
-              78:     76(int) BitCount 77
-              79:    6(float) Load 47(inF0)
-              80:    6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 79
-              81:    6(float) Load 47(inF0)
-              82:    6(float) ExtInst 1(GLSL.std.450) 27(Exp) 81
-              83:    6(float) Load 47(inF0)
-              84:    6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 83
-              87:     85(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 86
-              88:     85(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 86
-              89:    6(float) Load 47(inF0)
-              90:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 89
-              91:    6(float) Load 47(inF0)
-              92:    6(float) Load 62(inF1)
-              93:    6(float) FMod 91 92
-              94:    6(float) Load 47(inF0)
-              95:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 94
-              96:    6(float) Load 47(inF0)
-              98: 97(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 96
-              99:     85(int) CompositeExtract 98 1
-                              Store 62(inF1) 99
-             100:    6(float) CompositeExtract 98 0
-             101:    6(float) Load 47(inF0)
-             102:    6(float) Fwidth 101
-             103:    6(float) Load 47(inF0)
-             104:    49(bool) IsInf 103
-             105:    6(float) Load 47(inF0)
-             106:    49(bool) IsNan 105
-             107:    6(float) Load 47(inF0)
-             108:    6(float) Load 62(inF1)
-             109:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 107 108
-             110:    6(float) Load 47(inF0)
-             111:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 110
-             112:    6(float) Load 47(inF0)
-             113:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 112
-             115:    6(float) FMul 113 114
+              61:     60(int) Bitcast 59
+              62:    6(float) Load 47(inF0)
+              64:     63(int) Bitcast 62
+              67:     63(int) Load 66(inU0)
+              68:    6(float) Bitcast 67
+              69:    6(float) Load 47(inF0)
+              70:    6(float) ExtInst 1(GLSL.std.450) 18(Atan) 69
+              71:    6(float) Load 47(inF0)
+              73:    6(float) Load 72(inF1)
+              74:    6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 71 73
+              75:    6(float) Load 47(inF0)
+              76:    6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 75
+              77:    6(float) Load 47(inF0)
+              78:    6(float) Load 72(inF1)
+              80:    6(float) Load 79(inF2)
+              81:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 77 78 80
+              82:    6(float) Load 47(inF0)
+              83:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 82
+              84:    6(float) Load 47(inF0)
+              85:    6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 84
+              87:     63(int) BitCount 86
+              88:    6(float) Load 47(inF0)
+              89:    6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 88
+              90:    6(float) Load 47(inF0)
+              91:    6(float) ExtInst 1(GLSL.std.450) 27(Exp) 90
+              92:    6(float) Load 47(inF0)
+              93:    6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 92
+              95:     60(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 94
+              96:     60(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 94
+              97:    6(float) Load 47(inF0)
+              98:    6(float) ExtInst 1(GLSL.std.450) 8(Floor) 97
+              99:    6(float) Load 47(inF0)
+             100:    6(float) Load 72(inF1)
+             101:    6(float) FMod 99 100
+             102:    6(float) Load 47(inF0)
+             103:    6(float) ExtInst 1(GLSL.std.450) 10(Fract) 102
+             104:    6(float) Load 47(inF0)
+             106:105(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 104
+             107:     60(int) CompositeExtract 106 1
+                              Store 72(inF1) 107
+             108:    6(float) CompositeExtract 106 0
+             109:    6(float) Load 47(inF0)
+             110:    49(bool) IsInf 109
+             111:    6(float) Load 47(inF0)
+             112:    49(bool) IsNan 111
+             113:    6(float) Load 47(inF0)
+             114:    6(float) Load 72(inF1)
+             115:    6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 113 114
              116:    6(float) Load 47(inF0)
-             117:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 116
+             117:    6(float) ExtInst 1(GLSL.std.450) 28(Log) 116
              118:    6(float) Load 47(inF0)
-             119:    6(float) Load 62(inF1)
-             120:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 118 119
-             121:    6(float) Load 47(inF0)
-             122:    6(float) Load 62(inF1)
-             123:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 121 122
+             119:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 118
+             121:    6(float) FMul 119 120
+             122:    6(float) Load 47(inF0)
+             123:    6(float) ExtInst 1(GLSL.std.450) 30(Log2) 122
              124:    6(float) Load 47(inF0)
-             125:    6(float) Load 62(inF1)
-             126:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 124 125
+             125:    6(float) Load 72(inF1)
+             126:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 124 125
              127:    6(float) Load 47(inF0)
-             128:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 127
-             130:     76(int) BitReverse 129
-             131:    6(float) Load 47(inF0)
-             132:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 131
+             128:    6(float) Load 72(inF1)
+             129:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 127 128
+             130:    6(float) Load 47(inF0)
+             131:    6(float) Load 72(inF1)
+             132:    6(float) ExtInst 1(GLSL.std.450) 26(Pow) 130 131
              133:    6(float) Load 47(inF0)
-             134:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 133
-             135:    6(float) Load 47(inF0)
-             138:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 135 136 137
+             134:    6(float) ExtInst 1(GLSL.std.450) 11(Radians) 133
+             136:     63(int) BitReverse 135
+             137:    6(float) Load 47(inF0)
+             138:    6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 137
              139:    6(float) Load 47(inF0)
-             140:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 139
+             140:    6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 139
              141:    6(float) Load 47(inF0)
-             142:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 141
-             143:    6(float) Load 47(inF0)
-             144:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 143
-                              Store 62(inF1) 144
+             144:    6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 141 142 143
              145:    6(float) Load 47(inF0)
-             146:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 145
-                              Store 69(inF2) 146
+             146:    6(float) ExtInst 1(GLSL.std.450) 6(FSign) 145
              147:    6(float) Load 47(inF0)
-             148:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 147
+             148:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 147
              149:    6(float) Load 47(inF0)
-             150:    6(float) Load 62(inF1)
-             151:    6(float) Load 69(inF2)
-             152:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 149 150 151
+             150:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 149
+                              Store 72(inF1) 150
+             151:    6(float) Load 47(inF0)
+             152:    6(float) ExtInst 1(GLSL.std.450) 14(Cos) 151
+                              Store 79(inF2) 152
              153:    6(float) Load 47(inF0)
-             154:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 153
+             154:    6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 153
              155:    6(float) Load 47(inF0)
-             156:    6(float) Load 62(inF1)
-             157:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 155 156
-             158:    6(float) Load 47(inF0)
-             159:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 158
-             160:    6(float) Load 47(inF0)
-             161:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 160
-             162:    6(float) Load 47(inF0)
-             163:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 162
-                              ReturnValue 136
+             156:    6(float) Load 72(inF1)
+             157:    6(float) Load 79(inF2)
+             158:    6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 155 156 157
+             159:    6(float) Load 47(inF0)
+             160:    6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 159
+             161:    6(float) Load 47(inF0)
+             162:    6(float) Load 72(inF1)
+             163:    6(float) ExtInst 1(GLSL.std.450) 48(Step) 161 162
+             164:    6(float) Load 47(inF0)
+             165:    6(float) ExtInst 1(GLSL.std.450) 15(Tan) 164
+             166:    6(float) Load 47(inF0)
+             167:    6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 166
+             168:    6(float) Load 47(inF0)
+             169:    6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 168
+                              ReturnValue 142
                               FunctionEnd
 19(TestGenMul(f1;f1;vf2;vf2;mf22;mf22;):           2 Function None 12
         13(inF0):      7(ptr) FunctionParameter
@@ -2709,51 +2761,51 @@ Shader version: 450
        17(inFM0):     11(ptr) FunctionParameter
        18(inFM1):     11(ptr) FunctionParameter
               20:             Label
-         956(r0):      7(ptr) Variable Function
-         960(r1):      9(ptr) Variable Function
-         964(r2):      9(ptr) Variable Function
-         968(r3):      7(ptr) Variable Function
-         972(r4):      9(ptr) Variable Function
-         976(r5):      9(ptr) Variable Function
-         980(r6):     11(ptr) Variable Function
-         984(r7):     11(ptr) Variable Function
-         988(r8):     11(ptr) Variable Function
-             957:    6(float) Load 13(inF0)
-             958:    6(float) Load 14(inF1)
-             959:    6(float) FMul 957 958
-                              Store 956(r0) 959
-             961:    8(fvec2) Load 15(inFV0)
-             962:    6(float) Load 13(inF0)
-             963:    8(fvec2) VectorTimesScalar 961 962
-                              Store 960(r1) 963
-             965:    6(float) Load 13(inF0)
-             966:    8(fvec2) Load 15(inFV0)
-             967:    8(fvec2) VectorTimesScalar 966 965
-                              Store 964(r2) 967
-             969:    8(fvec2) Load 15(inFV0)
-             970:    8(fvec2) Load 16(inFV1)
-             971:    6(float) Dot 969 970
-                              Store 968(r3) 971
-             973:          10 Load 17(inFM0)
-             974:    8(fvec2) Load 15(inFV0)
-             975:    8(fvec2) MatrixTimesVector 973 974
-                              Store 972(r4) 975
-             977:    8(fvec2) Load 15(inFV0)
-             978:          10 Load 17(inFM0)
-             979:    8(fvec2) VectorTimesMatrix 977 978
-                              Store 976(r5) 979
-             981:          10 Load 17(inFM0)
-             982:    6(float) Load 13(inF0)
-             983:          10 MatrixTimesScalar 981 982
-                              Store 980(r6) 983
-             985:    6(float) Load 13(inF0)
-             986:          10 Load 17(inFM0)
-             987:          10 MatrixTimesScalar 986 985
-                              Store 984(r7) 987
-             989:          10 Load 17(inFM0)
-             990:          10 Load 18(inFM1)
-             991:          10 MatrixTimesMatrix 989 990
-                              Store 988(r8) 991
+         974(r0):      7(ptr) Variable Function
+         978(r1):      9(ptr) Variable Function
+         982(r2):      9(ptr) Variable Function
+         986(r3):      7(ptr) Variable Function
+         990(r4):      9(ptr) Variable Function
+         994(r5):      9(ptr) Variable Function
+         998(r6):     11(ptr) Variable Function
+        1002(r7):     11(ptr) Variable Function
+        1006(r8):     11(ptr) Variable Function
+             975:    6(float) Load 13(inF0)
+             976:    6(float) Load 14(inF1)
+             977:    6(float) FMul 975 976
+                              Store 974(r0) 977
+             979:    8(fvec2) Load 15(inFV0)
+             980:    6(float) Load 13(inF0)
+             981:    8(fvec2) VectorTimesScalar 979 980
+                              Store 978(r1) 981
+             983:    6(float) Load 13(inF0)
+             984:    8(fvec2) Load 15(inFV0)
+             985:    8(fvec2) VectorTimesScalar 984 983
+                              Store 982(r2) 985
+             987:    8(fvec2) Load 15(inFV0)
+             988:    8(fvec2) Load 16(inFV1)
+             989:    6(float) Dot 987 988
+                              Store 986(r3) 989
+             991:          10 Load 17(inFM0)
+             992:    8(fvec2) Load 15(inFV0)
+             993:    8(fvec2) MatrixTimesVector 991 992
+                              Store 990(r4) 993
+             995:    8(fvec2) Load 15(inFV0)
+             996:          10 Load 17(inFM0)
+             997:    8(fvec2) VectorTimesMatrix 995 996
+                              Store 994(r5) 997
+             999:          10 Load 17(inFM0)
+            1000:    6(float) Load 13(inF0)
+            1001:          10 MatrixTimesScalar 999 1000
+                              Store 998(r6) 1001
+            1003:    6(float) Load 13(inF0)
+            1004:          10 Load 17(inFM0)
+            1005:          10 MatrixTimesScalar 1004 1003
+                              Store 1002(r7) 1005
+            1007:          10 Load 17(inFM0)
+            1008:          10 Load 18(inFM1)
+            1009:          10 MatrixTimesMatrix 1007 1008
+                              Store 1006(r8) 1009
                               Return
                               FunctionEnd
 32(TestGenMul(f1;f1;vf3;vf3;mf33;mf33;):           2 Function None 25
@@ -2764,51 +2816,51 @@ Shader version: 450
        30(inFM0):     24(ptr) FunctionParameter
        31(inFM1):     24(ptr) FunctionParameter
               33:             Label
-         992(r0):      7(ptr) Variable Function
-         996(r1):     22(ptr) Variable Function
-        1000(r2):     22(ptr) Variable Function
-        1004(r3):      7(ptr) Variable Function
-        1008(r4):     22(ptr) Variable Function
-        1012(r5):     22(ptr) Variable Function
-        1016(r6):     24(ptr) Variable Function
-        1020(r7):     24(ptr) Variable Function
-        1024(r8):     24(ptr) Variable Function
-             993:    6(float) Load 26(inF0)
-             994:    6(float) Load 27(inF1)
-             995:    6(float) FMul 993 994
-                              Store 992(r0) 995
-             997:   21(fvec3) Load 28(inFV0)
-             998:    6(float) Load 26(inF0)
-             999:   21(fvec3) VectorTimesScalar 997 998
-                              Store 996(r1) 999
-            1001:    6(float) Load 26(inF0)
-            1002:   21(fvec3) Load 28(inFV0)
-            1003:   21(fvec3) VectorTimesScalar 1002 1001
-                              Store 1000(r2) 1003
-            1005:   21(fvec3) Load 28(inFV0)
-            1006:   21(fvec3) Load 29(inFV1)
-            1007:    6(float) Dot 1005 1006
-                              Store 1004(r3) 1007
-            1009:          23 Load 30(inFM0)
-            1010:   21(fvec3) Load 28(inFV0)
-            1011:   21(fvec3) MatrixTimesVector 1009 1010
-                              Store 1008(r4) 1011
-            1013:   21(fvec3) Load 28(inFV0)
-            1014:          23 Load 30(inFM0)
-            1015:   21(fvec3) VectorTimesMatrix 1013 1014
-                              Store 1012(r5) 1015
-            1017:          23 Load 30(inFM0)
-            1018:    6(float) Load 26(inF0)
-            1019:          23 MatrixTimesScalar 1017 1018
-                              Store 1016(r6) 1019
-            1021:    6(float) Load 26(inF0)
-            1022:          23 Load 30(inFM0)
-            1023:          23 MatrixTimesScalar 1022 1021
-                              Store 1020(r7) 1023
-            1025:          23 Load 30(inFM0)
-            1026:          23 Load 31(inFM1)
-            1027:          23 MatrixTimesMatrix 1025 1026
-                              Store 1024(r8) 1027
+        1010(r0):      7(ptr) Variable Function
+        1014(r1):     22(ptr) Variable Function
+        1018(r2):     22(ptr) Variable Function
+        1022(r3):      7(ptr) Variable Function
+        1026(r4):     22(ptr) Variable Function
+        1030(r5):     22(ptr) Variable Function
+        1034(r6):     24(ptr) Variable Function
+        1038(r7):     24(ptr) Variable Function
+        1042(r8):     24(ptr) Variable Function
+            1011:    6(float) Load 26(inF0)
+            1012:    6(float) Load 27(inF1)
+            1013:    6(float) FMul 1011 1012
+                              Store 1010(r0) 1013
+            1015:   21(fvec3) Load 28(inFV0)
+            1016:    6(float) Load 26(inF0)
+            1017:   21(fvec3) VectorTimesScalar 1015 1016
+                              Store 1014(r1) 1017
+            1019:    6(float) Load 26(inF0)
+            1020:   21(fvec3) Load 28(inFV0)
+            1021:   21(fvec3) VectorTimesScalar 1020 1019
+                              Store 1018(r2) 1021
+            1023:   21(fvec3) Load 28(inFV0)
+            1024:   21(fvec3) Load 29(inFV1)
+            1025:    6(float) Dot 1023 1024
+                              Store 1022(r3) 1025
+            1027:          23 Load 30(inFM0)
+            1028:   21(fvec3) Load 28(inFV0)
+            1029:   21(fvec3) MatrixTimesVector 1027 1028
+                              Store 1026(r4) 1029
+            1031:   21(fvec3) Load 28(inFV0)
+            1032:          23 Load 30(inFM0)
+            1033:   21(fvec3) VectorTimesMatrix 1031 1032
+                              Store 1030(r5) 1033
+            1035:          23 Load 30(inFM0)
+            1036:    6(float) Load 26(inF0)
+            1037:          23 MatrixTimesScalar 1035 1036
+                              Store 1034(r6) 1037
+            1039:    6(float) Load 26(inF0)
+            1040:          23 Load 30(inFM0)
+            1041:          23 MatrixTimesScalar 1040 1039
+                              Store 1038(r7) 1041
+            1043:          23 Load 30(inFM0)
+            1044:          23 Load 31(inFM1)
+            1045:          23 MatrixTimesMatrix 1043 1044
+                              Store 1042(r8) 1045
                               Return
                               FunctionEnd
 45(TestGenMul(f1;f1;vf4;vf4;mf44;mf44;):           2 Function None 38
@@ -2819,50 +2871,50 @@ Shader version: 450
        43(inFM0):     37(ptr) FunctionParameter
        44(inFM1):     37(ptr) FunctionParameter
               46:             Label
-        1028(r0):      7(ptr) Variable Function
-        1032(r1):     35(ptr) Variable Function
-        1036(r2):     35(ptr) Variable Function
-        1040(r3):      7(ptr) Variable Function
-        1044(r4):     35(ptr) Variable Function
-        1048(r5):     35(ptr) Variable Function
-        1052(r6):     37(ptr) Variable Function
-        1056(r7):     37(ptr) Variable Function
-        1060(r8):     37(ptr) Variable Function
-            1029:    6(float) Load 39(inF0)
-            1030:    6(float) Load 40(inF1)
-            1031:    6(float) FMul 1029 1030
-                              Store 1028(r0) 1031
-            1033:   34(fvec4) Load 41(inFV0)
-            1034:    6(float) Load 39(inF0)
-            1035:   34(fvec4) VectorTimesScalar 1033 1034
-                              Store 1032(r1) 1035
-            1037:    6(float) Load 39(inF0)
-            1038:   34(fvec4) Load 41(inFV0)
-            1039:   34(fvec4) VectorTimesScalar 1038 1037
-                              Store 1036(r2) 1039
-            1041:   34(fvec4) Load 41(inFV0)
-            1042:   34(fvec4) Load 42(inFV1)
-            1043:    6(float) Dot 1041 1042
-                              Store 1040(r3) 1043
-            1045:          36 Load 43(inFM0)
-            1046:   34(fvec4) Load 41(inFV0)
-            1047:   34(fvec4) MatrixTimesVector 1045 1046
-                              Store 1044(r4) 1047
-            1049:   34(fvec4) Load 41(inFV0)
-            1050:          36 Load 43(inFM0)
-            1051:   34(fvec4) VectorTimesMatrix 1049 1050
-                              Store 1048(r5) 1051
-            1053:          36 Load 43(inFM0)
-            1054:    6(float) Load 39(inF0)
-            1055:          36 MatrixTimesScalar 1053 1054
-                              Store 1052(r6) 1055
-            1057:    6(float) Load 39(inF0)
-            1058:          36 Load 43(inFM0)
-            1059:          36 MatrixTimesScalar 1058 1057
-                              Store 1056(r7) 1059
-            1061:          36 Load 43(inFM0)
-            1062:          36 Load 44(inFM1)
-            1063:          36 MatrixTimesMatrix 1061 1062
-                              Store 1060(r8) 1063
+        1046(r0):      7(ptr) Variable Function
+        1050(r1):     35(ptr) Variable Function
+        1054(r2):     35(ptr) Variable Function
+        1058(r3):      7(ptr) Variable Function
+        1062(r4):     35(ptr) Variable Function
+        1066(r5):     35(ptr) Variable Function
+        1070(r6):     37(ptr) Variable Function
+        1074(r7):     37(ptr) Variable Function
+        1078(r8):     37(ptr) Variable Function
+            1047:    6(float) Load 39(inF0)
+            1048:    6(float) Load 40(inF1)
+            1049:    6(float) FMul 1047 1048
+                              Store 1046(r0) 1049
+            1051:   34(fvec4) Load 41(inFV0)
+            1052:    6(float) Load 39(inF0)
+            1053:   34(fvec4) VectorTimesScalar 1051 1052
+                              Store 1050(r1) 1053
+            1055:    6(float) Load 39(inF0)
+            1056:   34(fvec4) Load 41(inFV0)
+            1057:   34(fvec4) VectorTimesScalar 1056 1055
+                              Store 1054(r2) 1057
+            1059:   34(fvec4) Load 41(inFV0)
+            1060:   34(fvec4) Load 42(inFV1)
+            1061:    6(float) Dot 1059 1060
+                              Store 1058(r3) 1061
+            1063:          36 Load 43(inFM0)
+            1064:   34(fvec4) Load 41(inFV0)
+            1065:   34(fvec4) MatrixTimesVector 1063 1064
+                              Store 1062(r4) 1065
+            1067:   34(fvec4) Load 41(inFV0)
+            1068:          36 Load 43(inFM0)
+            1069:   34(fvec4) VectorTimesMatrix 1067 1068
+                              Store 1066(r5) 1069
+            1071:          36 Load 43(inFM0)
+            1072:    6(float) Load 39(inF0)
+            1073:          36 MatrixTimesScalar 1071 1072
+                              Store 1070(r6) 1073
+            1075:    6(float) Load 39(inF0)
+            1076:          36 Load 43(inFM0)
+            1077:          36 MatrixTimesScalar 1076 1075
+                              Store 1074(r7) 1077
+            1079:          36 Load 43(inFM0)
+            1080:          36 Load 44(inFM1)
+            1081:          36 MatrixTimesMatrix 1079 1080
+                              Store 1078(r8) 1081
                               Return
                               FunctionEnd
diff --git a/Test/hlsl.intrinsics.comp b/Test/hlsl.intrinsics.comp
new file mode 100644 (file)
index 0000000..79f3d7d
--- /dev/null
@@ -0,0 +1,129 @@
+
+#define gs     // TODO: define as groupshared when available in the grammar
+gs uint gs_ua;
+gs uint gs_ub;
+gs uint gs_uc;
+gs uint2 gs_ua2;
+gs uint2 gs_ub2;
+gs uint2 gs_uc2;
+gs uint3 gs_ua3;
+gs uint3 gs_ub3;
+gs uint3 gs_uc3;
+gs uint4 gs_ua4;
+gs uint4 gs_ub4;
+gs uint4 gs_uc4;
+
+float ComputeShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
+{
+    uint out_u1;
+
+    // Don't repeat all the pixel/vertex fns - just one for sanity.
+    all(inF0);
+
+    // Test atomics
+    InterlockedAdd(gs_ua, gs_ub);
+    InterlockedAdd(gs_ua, gs_ub, out_u1);
+    InterlockedAnd(gs_ua, gs_ub);
+    InterlockedAnd(gs_ua, gs_ub, out_u1);
+    InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1);
+    InterlockedExchange(gs_ua, gs_ub, out_u1);
+    InterlockedMax(gs_ua, gs_ub);
+    InterlockedMax(gs_ua, gs_ub, out_u1);
+    InterlockedMin(gs_ua, gs_ub);
+    InterlockedMin(gs_ua, gs_ub, out_u1);
+    InterlockedOr(gs_ua, gs_ub);
+    InterlockedOr(gs_ua, gs_ub, out_u1);
+    InterlockedXor(gs_ua, gs_ub);
+    InterlockedXor(gs_ua, gs_ub, out_u1);
+
+    // CheckAccessFullyMapped(3);  // TODO: ...
+
+    return 0.0;
+}
+
+float1 ComputeShaderFunction(float1 inF0, float1 inF1, float1 inF2)
+{
+    // TODO: ... add when float1 prototypes are generated
+    return 0.0;
+}
+
+float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
+{
+    uint2 out_u2;
+
+    // Don't repeat all the pixel/vertex fns - just one for sanity.
+    all(inF0);
+
+    // Test atomics
+    InterlockedAdd(gs_ua2, gs_ub2);
+    InterlockedAdd(gs_ua2, gs_ub2, out_u2);
+    InterlockedAnd(gs_ua2, gs_ub2);
+    InterlockedAnd(gs_ua2, gs_ub2, out_u2);
+    InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2);
+    InterlockedExchange(gs_ua2, gs_ub2, out_u2);
+    InterlockedMax(gs_ua2, gs_ub2);
+    InterlockedMax(gs_ua2, gs_ub2, out_u2);
+    InterlockedMin(gs_ua2, gs_ub2);
+    InterlockedMin(gs_ua2, gs_ub2, out_u2);
+    InterlockedOr(gs_ua2, gs_ub2);
+    InterlockedOr(gs_ua2, gs_ub2, out_u2);
+    InterlockedXor(gs_ua2, gs_ub2);
+    InterlockedXor(gs_ua2, gs_ub2, out_u2);
+
+    // TODO: ... add when float1 prototypes are generated
+    return float2(1,2);
+}
+
+float3 ComputeShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
+{
+    uint3 out_u3;
+    
+    // Don't repeat all the pixel/vertex fns - just one for sanity.
+    all(inF0);
+
+    // Test atomics
+    InterlockedAdd(gs_ua3, gs_ub3);
+    InterlockedAdd(gs_ua3, gs_ub3, out_u3);
+    InterlockedAnd(gs_ua3, gs_ub3);
+    InterlockedAnd(gs_ua3, gs_ub3, out_u3);
+    InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3);
+    InterlockedExchange(gs_ua3, gs_ub3, out_u3);
+    InterlockedMax(gs_ua3, gs_ub3);
+    InterlockedMax(gs_ua3, gs_ub3, out_u3);
+    InterlockedMin(gs_ua3, gs_ub3);
+    InterlockedMin(gs_ua3, gs_ub3, out_u3);
+    InterlockedOr(gs_ua3, gs_ub3);
+    InterlockedOr(gs_ua3, gs_ub3, out_u3);
+    InterlockedXor(gs_ua3, gs_ub3);
+    InterlockedXor(gs_ua3, gs_ub3, out_u3);
+
+    // TODO: ... add when float1 prototypes are generated
+    return float3(1,2,3);
+}
+
+float4 ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1)
+{
+    uint4 out_u4;
+
+    // Don't repeat all the pixel/vertex fns - just one for sanity.
+    all(inF0);
+
+    // Test atomics
+    InterlockedAdd(gs_ua4, gs_ub4);
+    InterlockedAdd(gs_ua4, gs_ub4, out_u4);
+    InterlockedAnd(gs_ua4, gs_ub4);
+    InterlockedAnd(gs_ua4, gs_ub4, out_u4);
+    InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4);
+    InterlockedExchange(gs_ua4, gs_ub4, out_u4);
+    InterlockedMax(gs_ua4, gs_ub4);
+    InterlockedMax(gs_ua4, gs_ub4, out_u4);
+    InterlockedMin(gs_ua4, gs_ub4);
+    InterlockedMin(gs_ua4, gs_ub4, out_u4);
+    InterlockedOr(gs_ua4, gs_ub4);
+    InterlockedOr(gs_ua4, gs_ub4, out_u4);
+    InterlockedXor(gs_ua4, gs_ub4);
+    InterlockedXor(gs_ua4, gs_ub4, out_u4);
+
+    // TODO: ... add when float1 prototypes are generated
+    return float4(1,2,3,4);
+}
index a8a49a0..a0915c2 100644 (file)
@@ -1,10 +1,31 @@
-float PixelShaderFunction(float inF0, float inF1, float inF2)
+
+#define gs     // TODO: define as groupshared when available in the grammar
+gs uint gs_ua;
+gs uint gs_ub;
+gs uint gs_uc;
+gs uint2 gs_ua2;
+gs uint2 gs_ub2;
+gs uint2 gs_uc2;
+gs uint3 gs_ua3;
+gs uint3 gs_ub3;
+gs uint3 gs_uc3;
+gs uint4 gs_ua4;
+gs uint4 gs_ub4;
+gs uint4 gs_uc4;
+
+float PixelShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
 {
+    uint out_u1;
+
     all(inF0);
     abs(inF0);
     acos(inF0);
     any(inF0);
     asin(inF0);
+    asint(inF0);
+    asuint(inF0);
+    asfloat(inU0);
+    // asdouble(inU0, inU1);  // TODO: enable when HLSL parser used for intrinsics
     atan(inF0);
     atan2(inF0, inF1);
     ceil(inF0);
@@ -69,13 +90,19 @@ float1 PixelShaderFunction(float1 inF0, float1 inF1, float1 inF2)
     return 0.0;
 }
 
-float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2)
+float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
 {
+    uint2 out_u2;
+
     all(inF0);
     abs(inF0);
     acos(inF0);
     any(inF0);
     asin(inF0);
+    asint(inF0);
+    asuint(inF0);
+    asfloat(inU0);
+    // asdouble(inU0, inU1);  // TODO: enable when HLSL parser used for intrinsics
     atan(inF0);
     atan2(inF0, inF1);
     ceil(inF0);
@@ -142,13 +169,19 @@ float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2)
     return float2(1,2);
 }
 
-float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2)
+float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
 {
+    uint3 out_u3;
+    
     all(inF0);
     abs(inF0);
     acos(inF0);
     any(inF0);
     asin(inF0);
+    asint(inF0);
+    asuint(inF0);
+    asfloat(inU0);
+    // asdouble(inU0, inU1);  // TODO: enable when HLSL parser used for intrinsics
     atan(inF0);
     atan2(inF0, inF1);
     ceil(inF0);
@@ -216,13 +249,19 @@ float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2)
     return float3(1,2,3);
 }
 
-float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2)
+float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1)
 {
+    uint4 out_u4;
+
     all(inF0);
     abs(inF0);
     acos(inF0);
     any(inF0);
     asin(inF0);
+    asint(inF0);
+    asuint(inF0);
+    asfloat(inU0);
+    // asdouble(inU0, inU1);  // TODO: enable when HLSL parser used for intrinsics
     atan(inF0);
     atan2(inF0, inF1);
     ceil(inF0);
@@ -290,6 +329,11 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2)
     return float4(1,2,3,4);
 }
 
+// TODO: for mats:
+//    asfloat(inU0); \
+//    asint(inF0); \
+//    asuint(inF0); \
+
 // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
 #define MATFNS() \
     all(inF0); \
diff --git a/Test/hlsl.intrinsics.negative.comp b/Test/hlsl.intrinsics.negative.comp
new file mode 100644 (file)
index 0000000..1b2ecd9
--- /dev/null
@@ -0,0 +1,201 @@
+float ComputeShaderFunction(float inF0, float inF1, float inF2, int inI0)
+{
+    uint out_u1;
+
+    // AllMemoryBarrier();              // invalid in fragment stage  TODO: parser currently crashes on empty arg list
+    // AllMemoryBarrierWithGroupSync(); // invalid in fragment stage  TODO: parser currently crashes on empty arg list
+    asdouble(inF0, inF1);                     // expected error: only integer inputs
+    CheckAccessFullyMapped(3.0);              // expected error: only valid on integers
+    clip(inF0);                               // expected error: only valid in pixel stage
+    countbits(inF0);                          // expected error: only integer inputs
+    cross(inF0, inF1);                        // expected error: only on float3 inputs
+    D3DCOLORtoUBYTE4(inF0);                   // expected error: only on float4 inputs
+    ddx(inF0);                                // expected error: only valid in pixel stage
+    ddx_coarse(inF0);                         // expected error: only valid in pixel stage
+    ddx_fine(inF0);                           // expected error: only valid in pixel stage
+    ddy(inF0);                                // expected error: only valid in pixel stage
+    ddy_coarse(inF0);                         // expected error: only valid in pixel stage
+    ddy_fine(inF0);                           // expected error: only valid in pixel stage
+    determinant(inF0);                        // expected error: only valid on mats
+    EvaluateAttributeAtCentroid(inF0);        // expected error: only valid in pixel stage
+    EvaluateAttributeAtSample(inF0, 2);       // expected error: only valid in pixel stage
+    EvaluateAttributeSnapped(inF0, int2(2));  // expected error: only valid in pixel stage
+    f16tof32(inF0);                           // expected error: only integer inputs
+    firstbithigh(inF0);                       // expected error: only integer inputs
+    firstbitlow(inF0);                        // expected error: only integer inputs
+    fma(inF0, inF1, inF2);                    // expected error: only double inputs
+    fwidth(inF0);                             // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua, gs_ub);             // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua, gs_ub);             // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
+    InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
+    InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
+    InterlockedMax(gs_ua, gs_ub);             // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua, gs_ub);             // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua, gs_ub);              // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua, gs_ub, out_u1);      // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua, gs_ub);             // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
+    length(inF0);                             // expect error: invalid on scalars
+    msad4(inF0, float2(0), float4(0));        // expected error: only integer inputs
+    normalize(inF0);                          // expect error: invalid on scalars
+    reflect(inF0, inF1);                      // expect error: invalid on scalars
+    refract(inF0, inF1, inF2);                // expect error: invalid on scalars
+    refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
+    reversebits(inF0);                        // expected error: only integer inputs
+    transpose(inF0);                          // expect error: only valid on mats
+
+    // TODO: texture intrinsics, when we can declare samplers.
+
+    return 0.0;
+}
+
+float1 ComputeShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
+{
+    // TODO: ... add when float1 prototypes are generated
+
+    GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
+
+    return 0.0;
+}
+
+float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
+{
+    uint2 out_u2;
+
+    asdouble(inF0, inF1);         // expected error: only integer inputs
+    CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+    countbits(inF0);              // expected error: only integer inputs
+    cross(inF0, inF1);            // expected error: only on float3 inputs
+    D3DCOLORtoUBYTE4(inF0);       // expected error: only on float4 inputs
+    ddx(inF0);                                // only valid in pixel stage
+    ddx_coarse(inF0);                         // only valid in pixel stage
+    ddx_fine(inF0);                           // only valid in pixel stage
+    ddy(inF0);                                // only valid in pixel stage
+    ddy_coarse(inF0);                         // only valid in pixel stage
+    ddy_fine(inF0);                           // only valid in pixel stage
+    determinant(inF0);            // expect error: only valid on mats
+    EvaluateAttributeAtCentroid(inF0);        // expected error: only valid in pixel stage
+    EvaluateAttributeAtSample(inF0, 2);       // expected error: only valid in pixel stage
+    EvaluateAttributeSnapped(inF0, int2(2));  // expected error: only valid in pixel stage
+    f16tof32(inF0);               // expected error: only integer inputs
+    firstbithigh(inF0);           // expected error: only integer inputs
+    firstbitlow(inF0);            // expected error: only integer inputs
+    fma(inF0, inF1, inF2);        // expected error: only double inputs
+    fwidth(inF0);                 // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua2, gs_ub2);         // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua2, gs_ub2);         // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+    InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
+    InterlockedExchange(gs_ua2, gs_ub2, out_u2);// expected error: only valid in pixel stage
+    InterlockedMax(gs_ua2, gs_ub2);         // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua2, gs_ub2);         // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua2, gs_ub2);          // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua2, gs_ub2, out_u2);  // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua2, gs_ub2);         // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+    noise(inF0);                  // expected error: only valid in pixel stage
+    reversebits(inF0);            // expected error: only integer inputs
+    transpose(inF0);              // expect error: only valid on mats
+
+    // TODO: texture intrinsics, when we can declare samplers.
+
+    return float2(1,2);
+}
+
+float3 ComputeShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
+{
+    uint3 out_u3;
+
+    CheckAccessFullyMapped(inF0);                               // expect error: only valid on scalars
+    countbits(inF0);                                            // expected error: only integer inputs
+    ddx(inF0);                                                  // only valid in pixel stage
+    ddx_coarse(inF0);                                           // only valid in pixel stage
+    ddx_fine(inF0);                                             // only valid in pixel stage
+    ddy(inF0);                                                  // only valid in pixel stage
+    ddy_coarse(inF0);                                           // only valid in pixel stage
+    ddy_fine(inF0);                                             // only valid in pixel stage
+    D3DCOLORtoUBYTE4(inF0);                                     // expected error: only on float4 inputs
+    determinant(inF0);                                          // expect error: only valid on mats
+    EvaluateAttributeAtCentroid(inF0);                          // expected error: only valid in pixel stage
+    EvaluateAttributeAtSample(inF0, 2);                         // expected error: only valid in pixel stage
+    EvaluateAttributeSnapped(inF0, int2(2));                    // expected error: only valid in pixel stage
+    f16tof32(inF0);                                             // expected error: only integer inputs
+    firstbithigh(inF0);                                         // expected error: only integer inputs
+    firstbitlow(inF0);                                          // expected error: only integer inputs
+    fma(inF0, inF1, inF2);                                      // expected error: only double inputs
+    fwidth(inF0);                                               // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
+    InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
+    InterlockedExchange(gs_ua3, gs_ub3, out_u3);                // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua3, gs_ub3);                              // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua3, gs_ub3, out_u3);                      // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
+    noise(inF0);                                                // expected error: only valid in pixel stage
+    reversebits(inF0);                                          // expected error: only integer inputs
+    transpose(inF0);                                            // expect error: only valid on mats
+
+    // TODO: texture intrinsics, when we can declare samplers.
+
+    return float3(1,2,3);
+}
+
+float4 ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
+{
+    uint4 out_u4;
+
+    CheckAccessFullyMapped(inF0);                               // expect error: only valid on scalars
+    countbits(inF0);                                            // expected error: only integer inputs
+    cross(inF0, inF1);                                          // expected error: only on float3 inputs
+    determinant(inF0);                                          // expect error: only valid on mats
+    ddx(inF0);                                                  // only valid in pixel stage
+    ddx_coarse(inF0);                                           // only valid in pixel stage
+    ddx_fine(inF0);                                             // only valid in pixel stage
+    ddy(inF0);                                                  // only valid in pixel stage
+    ddy_coarse(inF0);                                           // only valid in pixel stage
+    ddy_fine(inF0);                                             // only valid in pixel stage
+    EvaluateAttributeAtCentroid(inF0);                          // expected error: only valid in pixel stage
+    EvaluateAttributeAtSample(inF0, 2);                         // expected error: only valid in pixel stage
+    EvaluateAttributeSnapped(inF0, int2(2));                    // expected error: only valid in pixel stage
+    f16tof32(inF0);                                             // expected error: only integer inputs
+    firstbithigh(inF0);                                         // expected error: only integer inputs
+    firstbitlow(inF0);                                          // expected error: only integer inputs
+    fma(inF0, inF1, inF2);                                      // expected error: only double inputs
+    fwidth(inF0);                                               // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
+    InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
+    InterlockedExchange(gs_ua4, gs_ub4, out_u4);                // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua4, gs_ub4);                              // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua4, gs_ub4, out_u4);                      // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
+    noise(inF0);                                                // expected error: only valid in pixel stage
+    reversebits(inF0);                                          // expected error: only integer inputs
+    transpose(inF0);                                            // expect error: only valid on mats
+
+    // TODO: texture intrinsics, when we can declare samplers.
+
+    return float4(1,2,3,4);
+}
+
index b93f104..ddbac06 100644 (file)
@@ -78,16 +78,16 @@ float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
 
 float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
 {
-    CheckAccessFullyMapped(inF0);  // expected error: only valid on scalars
-    countbits(inF0);            // expected error: only integer inputs
-    cross(inF0, inF1);          // expected error: only on float3 inputs
-    determinant(inF0);          // expected error: only valid on mats
-    f16tof32(inF0);             // expected error: only integer inputs
-    firstbithigh(inF0);         // expected error: only integer inputs
-    firstbitlow(inF0);          // expected error: only integer inputs
-    fma(inF0, inF1, inF2);      // expected error: only double inputs
-    reversebits(inF0);          // expected error: only integer inputs
-    transpose(inF0);            // expected error: only valid on mats
+    CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
+    countbits(inF0);              // expected error: only integer inputs
+    cross(inF0, inF1);            // expected error: only on float3 inputs
+    determinant(inF0);            // expected error: only valid on mats
+    f16tof32(inF0);               // expected error: only integer inputs
+    firstbithigh(inF0);           // expected error: only integer inputs
+    firstbitlow(inF0);            // expected error: only integer inputs
+    fma(inF0, inF1, inF2);        // expected error: only double inputs
+    reversebits(inF0);            // expected error: only integer inputs
+    transpose(inF0);              // expected error: only valid on mats
 
     return float4(1,2,3,4);
 }
index ee2a29d..c37d8bc 100644 (file)
@@ -1,22 +1,37 @@
+uint gs_ua;
+uint gs_ub;
+uint gs_uc;
+uint2 gs_ua2;
+uint2 gs_ub2;
+uint2 gs_uc2;
+uint3 gs_ua3;
+uint3 gs_ub3;
+uint3 gs_uc3;
+uint4 gs_ua4;
+uint4 gs_ub4;
+uint4 gs_uc4;
+
 float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
 {
+    uint out_u1;
+
     // AllMemoryBarrier();              // invalid in fragment stage  TODO: parser currently crashes on empty arg list
     // AllMemoryBarrierWithGroupSync(); // invalid in fragment stage  TODO: parser currently crashes on empty arg list
     asdouble(inF0, inF1);                     // expected error: only integer inputs
     CheckAccessFullyMapped(3.0);              // expected error: only valid on integers
     CheckAccessFullyMapped(3);                // expected error: only valid in pixel & compute stages
-    clip(inF0);                               // expected error: only valid in pixel & compute stages
+    clip(inF0);                               // expected error: only valid in pixel stage
     countbits(inF0);                          // expected error: only integer inputs
     cross(inF0, inF1);                        // expected error: only on float3 inputs
     D3DCOLORtoUBYTE4(inF0);                   // expected error: only on float4 inputs
     // DeviceMemoryBarrier();                    // TODO: expected error: only valid in pixel & compute stages
     // DeviceMemoryBarrierWithGroupSync();       // TODO: expected error: only valid in compute stage
-    ddx(inF0);                                // expected error: only valid in pixel & compute stages
-    ddx_coarse(inF0);                         // expected error: only valid in pixel & compute stages
-    ddx_fine(inF0);                           // expected error: only valid in pixel & compute stages
-    ddy(inF0);                                // expected error: only valid in pixel & compute stages
-    ddy_coarse(inF0);                         // expected error: only valid in pixel & compute stages
-    ddy_fine(inF0);                           // expected error: only valid in pixel & compute stages
+    ddx(inF0);                                // expected error: only valid in pixel stage
+    ddx_coarse(inF0);                         // expected error: only valid in pixel stage
+    ddx_fine(inF0);                           // expected error: only valid in pixel stage
+    ddy(inF0);                                // expected error: only valid in pixel stage
+    ddy_coarse(inF0);                         // expected error: only valid in pixel stage
+    ddy_fine(inF0);                           // expected error: only valid in pixel stage
     determinant(inF0);                        // expected error: only valid on mats
     EvaluateAttributeAtCentroid(inF0);        // expected error: only valid in pixel stage
     EvaluateAttributeAtSample(inF0, 2);       // expected error: only valid in pixel stage
@@ -25,11 +40,21 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
     firstbithigh(inF0);                       // expected error: only integer inputs
     firstbitlow(inF0);                        // expected error: only integer inputs
     fma(inF0, inF1, inF2);                    // expected error: only double inputs
-    // InterlockedAdd(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
-    // InterlockedAnd(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out i    // InterlockedMax(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
-    // InterlockedMin(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
-    // InterlockedOor(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
-    // InterlockedXor(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
+    fwidth(inF0);                             // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua, gs_ub);             // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua, gs_ub);             // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
+    InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
+    InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
+    InterlockedMax(gs_ua, gs_ub);             // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua, gs_ub);             // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua, gs_ub);              // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua, gs_ub, out_u1);      // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua, gs_ub);             // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
     // GroupMemoryBarrier();               // TODO: expected error: only valid in compute stage
     // GroupMemoryBarrierWithGroupSync();  // TODO: expected error: only valid in compute stage
     length(inF0);                             // expect error: invalid on scalars
@@ -57,28 +82,45 @@ float1 VertexShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
 
 float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
 {
-    asdouble(inF0, inF1);         // expected error: only integer inputs
-    CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
-    countbits(inF0);              // expected error: only integer inputs
-    cross(inF0, inF1);            // expected error: only on float3 inputs
-    D3DCOLORtoUBYTE4(inF0);       // expected error: only on float4 inputs
-    ddx(inF0);                                // only valid in pixel & compute stages
-    ddx_coarse(inF0);                         // only valid in pixel & compute stages
-    ddx_fine(inF0);                           // only valid in pixel & compute stages
-    ddy(inF0);                                // only valid in pixel & compute stages
-    ddy_coarse(inF0);                         // only valid in pixel & compute stages
-    ddy_fine(inF0);                           // only valid in pixel & compute stages
-    determinant(inF0);            // expect error: only valid on mats
-    EvaluateAttributeAtCentroid(inF0);        // expected error: only valid in pixel stage
-    EvaluateAttributeAtSample(inF0, 2);       // expected error: only valid in pixel stage
-    EvaluateAttributeSnapped(inF0, int2(2));  // expected error: only valid in pixel stage
-    f16tof32(inF0);               // expected error: only integer inputs
-    firstbithigh(inF0);           // expected error: only integer inputs
-    firstbitlow(inF0);            // expected error: only integer inputs
-    fma(inF0, inF1, inF2);        // expected error: only double inputs
-    noise(inF0);                  // expected error: only valid in pixel stage
-    reversebits(inF0);            // expected error: only integer inputs
-    transpose(inF0);              // expect error: only valid on mats
+    uint2 out_u2;
+
+    asdouble(inF0, inF1);                                       // expected error: only integer inputs
+    CheckAccessFullyMapped(inF0);                               // expect error: only valid on scalars
+    countbits(inF0);                                            // expected error: only integer inputs
+    cross(inF0, inF1);                                          // expected error: only on float3 inputs
+    D3DCOLORtoUBYTE4(inF0);                                     // expected error: only on float4 inputs
+    ddx(inF0);                                                  // only valid in pixel stage
+    ddx_coarse(inF0);                                           // only valid in pixel stage
+    ddx_fine(inF0);                                             // only valid in pixel stage
+    ddy(inF0);                                                  // only valid in pixel stage
+    ddy_coarse(inF0);                                           // only valid in pixel stage
+    ddy_fine(inF0);                                             // only valid in pixel stage
+    determinant(inF0);                                          // expect error: only valid on mats
+    EvaluateAttributeAtCentroid(inF0);                          // expected error: only valid in pixel stage
+    EvaluateAttributeAtSample(inF0, 2);                         // expected error: only valid in pixel stage
+    EvaluateAttributeSnapped(inF0, int2(2));                    // expected error: only valid in pixel stage
+    f16tof32(inF0);                                             // expected error: only integer inputs
+    firstbithigh(inF0);                                         // expected error: only integer inputs
+    firstbitlow(inF0);                                          // expected error: only integer inputs
+    fma(inF0, inF1, inF2);                                      // expected error: only double inputs
+    fwidth(inF0);                                               // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua2, gs_ub2);                             // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua2, gs_ub2, out_u2);                     // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua2, gs_ub2);                             // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua2, gs_ub2, out_u2);                     // expected error: only valid in pixel stage
+    InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
+    InterlockedExchange(gs_ua2, gs_ub2, out_u2);                // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua2, gs_ub2);                             // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua2, gs_ub2, out_u2);                     // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua2, gs_ub2);                             // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua2, gs_ub2, out_u2);                     // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua2, gs_ub2);                              // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua2, gs_ub2, out_u2);                      // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua2, gs_ub2);                             // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua2, gs_ub2, out_u2);                     // expected error: only valid in pixel stage
+    noise(inF0);                                                // expected error: only valid in pixel stage
+    reversebits(inF0);                                          // expected error: only integer inputs
+    transpose(inF0);                                            // expect error: only valid on mats
 
     // TODO: texture intrinsics, when we can declare samplers.
 
@@ -87,26 +129,43 @@ float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
 
 float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
 {
-    CheckAccessFullyMapped(inF0);  // expect error: only valid on scalars
-    countbits(inF0);            // expected error: only integer inputs
-    ddx(inF0);                                // only valid in pixel & compute stages
-    ddx_coarse(inF0);                         // only valid in pixel & compute stages
-    ddx_fine(inF0);                           // only valid in pixel & compute stages
-    ddy(inF0);                                // only valid in pixel & compute stages
-    ddy_coarse(inF0);                         // only valid in pixel & compute stages
-    ddy_fine(inF0);                           // only valid in pixel & compute stages
-    D3DCOLORtoUBYTE4(inF0);     // expected error: only on float4 inputs
-    determinant(inF0);          // expect error: only valid on mats
-    EvaluateAttributeAtCentroid(inF0);        // expected error: only valid in pixel stage
-    EvaluateAttributeAtSample(inF0, 2);       // expected error: only valid in pixel stage
-    EvaluateAttributeSnapped(inF0, int2(2));  // expected error: only valid in pixel stage
-    f16tof32(inF0);             // expected error: only integer inputs
-    firstbithigh(inF0);         // expected error: only integer inputs
-    firstbitlow(inF0);          // expected error: only integer inputs
-    fma(inF0, inF1, inF2);      // expected error: only double inputs
-    noise(inF0);                  // expected error: only valid in pixel stage
-    reversebits(inF0);          // expected error: only integer inputs
-    transpose(inF0);            // expect error: only valid on mats
+    uint3 out_u3;
+
+    CheckAccessFullyMapped(inF0);                               // expect error: only valid on scalars
+    countbits(inF0);                                            // expected error: only integer inputs
+    ddx(inF0);                                                  // only valid in pixel stage
+    ddx_coarse(inF0);                                           // only valid in pixel stage
+    ddx_fine(inF0);                                             // only valid in pixel stage
+    ddy(inF0);                                                  // only valid in pixel stage
+    ddy_coarse(inF0);                                           // only valid in pixel stage
+    ddy_fine(inF0);                                             // only valid in pixel stage
+    D3DCOLORtoUBYTE4(inF0);                                     // expected error: only on float4 inputs
+    determinant(inF0);                                          // expect error: only valid on mats
+    EvaluateAttributeAtCentroid(inF0);                          // expected error: only valid in pixel stage
+    EvaluateAttributeAtSample(inF0, 2);                         // expected error: only valid in pixel stage
+    EvaluateAttributeSnapped(inF0, int2(2));                    // expected error: only valid in pixel stage
+    f16tof32(inF0);                                             // expected error: only integer inputs
+    firstbithigh(inF0);                                         // expected error: only integer inputs
+    firstbitlow(inF0);                                          // expected error: only integer inputs
+    fma(inF0, inF1, inF2);                                      // expected error: only double inputs
+    fwidth(inF0);                                               // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
+    InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
+    InterlockedExchange(gs_ua3, gs_ub3, out_u3);                // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua3, gs_ub3);                              // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua3, gs_ub3, out_u3);                      // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
+    noise(inF0);                                                // expected error: only valid in pixel stage
+    reversebits(inF0);                                          // expected error: only integer inputs
+    transpose(inF0);                                            // expect error: only valid on mats
 
     // TODO: texture intrinsics, when we can declare samplers.
 
@@ -115,26 +174,43 @@ float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
 
 float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
 {
-    CheckAccessFullyMapped(inF0);  // expect error: only valid on scalars
-    countbits(inF0);            // expected error: only integer inputs
-    cross(inF0, inF1);          // expected error: only on float3 inputs
-    determinant(inF0);          // expect error: only valid on mats
-    ddx(inF0);                                // only valid in pixel & compute stages
-    ddx_coarse(inF0);                         // only valid in pixel & compute stages
-    ddx_fine(inF0);                           // only valid in pixel & compute stages
-    ddy(inF0);                                // only valid in pixel & compute stages
-    ddy_coarse(inF0);                         // only valid in pixel & compute stages
-    ddy_fine(inF0);                           // only valid in pixel & compute stages
-    EvaluateAttributeAtCentroid(inF0);        // expected error: only valid in pixel stage
-    EvaluateAttributeAtSample(inF0, 2);       // expected error: only valid in pixel stage
-    EvaluateAttributeSnapped(inF0, int2(2));  // expected error: only valid in pixel stage
-    f16tof32(inF0);             // expected error: only integer inputs
-    firstbithigh(inF0);         // expected error: only integer inputs
-    firstbitlow(inF0);          // expected error: only integer inputs
-    fma(inF0, inF1, inF2);      // expected error: only double inputs
-    noise(inF0);                  // expected error: only valid in pixel stage
-    reversebits(inF0);          // expected error: only integer inputs
-    transpose(inF0);            // expect error: only valid on mats
+    uint4 out_u4;
+
+    CheckAccessFullyMapped(inF0);                               // expect error: only valid on scalars
+    countbits(inF0);                                            // expected error: only integer inputs
+    cross(inF0, inF1);                                          // expected error: only on float3 inputs
+    determinant(inF0);                                          // expect error: only valid on mats
+    ddx(inF0);                                                  // only valid in pixel stage
+    ddx_coarse(inF0);                                           // only valid in pixel stage
+    ddx_fine(inF0);                                             // only valid in pixel stage
+    ddy(inF0);                                                  // only valid in pixel stage
+    ddy_coarse(inF0);                                           // only valid in pixel stage
+    ddy_fine(inF0);                                             // only valid in pixel stage
+    EvaluateAttributeAtCentroid(inF0);                          // expected error: only valid in pixel stage
+    EvaluateAttributeAtSample(inF0, 2);                         // expected error: only valid in pixel stage
+    EvaluateAttributeSnapped(inF0, int2(2));                    // expected error: only valid in pixel stage
+    f16tof32(inF0);                                             // expected error: only integer inputs
+    firstbithigh(inF0);                                         // expected error: only integer inputs
+    firstbitlow(inF0);                                          // expected error: only integer inputs
+    fma(inF0, inF1, inF2);                                      // expected error: only double inputs
+    fwidth(inF0);                                               // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
+    InterlockedAdd(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
+    InterlockedAnd(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
+    InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
+    InterlockedExchange(gs_ua4, gs_ub4, out_u4);                // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
+    InterlockedMax(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
+    InterlockedMin(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua4, gs_ub4);                              // expected error: only valid in pixel stage
+    InterlockedOr(gs_ua4, gs_ub4, out_u4);                      // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
+    InterlockedXor(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
+    noise(inF0);                                                // expected error: only valid in pixel stage
+    reversebits(inF0);                                          // expected error: only integer inputs
+    transpose(inF0);                                            // expect error: only valid on mats
 
     // TODO: texture intrinsics, when we can declare samplers.
 
@@ -159,6 +235,7 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
     firstbithigh(inF0);                      \
     firstbitlow(inF0);                       \
     fma(inF0, inF1, inF2);                   \
+    fwidth(inF0);                            \
     noise(inF0);                             \
     reversebits(inF0);                       \
     length(inF0);                            \
index cab79a8..c77404e 100644 (file)
@@ -1,10 +1,14 @@
-float VertexShaderFunction(float inF0, float inF1, float inF2)
+float VertexShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
 {
     all(inF0);
     abs(inF0);
     acos(inF0);
     any(inF0);
     asin(inF0);
+    asint(inF0);
+    asuint(inF0);
+    asfloat(inU0);
+    // asdouble(inU0, inU1);  // TODO: enable when HLSL parser used for intrinsics
     atan(inF0);
     atan2(inF0, inF1);
     ceil(inF0);
@@ -25,7 +29,6 @@ float VertexShaderFunction(float inF0, float inF1, float inF2)
     fmod(inF0, inF1);
     frac(inF0);
     frexp(inF0, inF1);
-    fwidth(inF0);
     isinf(inF0);
     isnan(inF0);
     ldexp(inF0, inF1);
@@ -62,13 +65,17 @@ float1 VertexShaderFunction(float1 inF0, float1 inF1, float1 inF2)
     return 0.0;
 }
 
-float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2)
+float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
 {
     all(inF0);
     abs(inF0);
     acos(inF0);
     any(inF0);
     asin(inF0);
+    asint(inF0);
+    asuint(inF0);
+    asfloat(inU0);
+    // asdouble(inU0, inU1);  // TODO: enable when HLSL parser used for intrinsics
     atan(inF0);
     atan2(inF0, inF1);
     ceil(inF0);
@@ -92,7 +99,6 @@ float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2)
     fmod(inF0, inF1);
     frac(inF0);
     frexp(inF0, inF1);
-    fwidth(inF0);
     isinf(inF0);
     isnan(inF0);
     ldexp(inF0, inF1);
@@ -128,13 +134,17 @@ float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2)
     return float2(1,2);
 }
 
-float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2)
+float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
 {
     all(inF0);
     abs(inF0);
     acos(inF0);
     any(inF0);
     asin(inF0);
+    asint(inF0);
+    asuint(inF0);
+    asfloat(inU0);
+    // asdouble(inU0, inU1);  // TODO: enable when HLSL parser used for intrinsics
     atan(inF0);
     atan2(inF0, inF1);
     ceil(inF0);
@@ -159,7 +169,6 @@ float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2)
     fmod(inF0, inF1);
     frac(inF0);
     frexp(inF0, inF1);
-    fwidth(inF0);
     isinf(inF0);
     isnan(inF0);
     ldexp(inF0, inF1);
@@ -195,13 +204,17 @@ float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2)
     return float3(1,2,3);
 }
 
-float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2)
+float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1)
 {
     all(inF0);
     abs(inF0);
     acos(inF0);
     any(inF0);
     asin(inF0);
+    asint(inF0);
+    asuint(inF0);
+    asfloat(inU0);
+    // asdouble(inU0, inU1);  // TODO: enable when HLSL parser used for intrinsics
     atan(inF0);
     atan2(inF0, inF1);
     ceil(inF0);
@@ -226,7 +239,6 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2)
     fmod(inF0, inF1);
     frac(inF0);
     frexp(inF0, inF1);
-    fwidth(inF0);
     isinf(inF0);
     isnan(inF0);
     ldexp(inF0, inF1);
@@ -262,6 +274,11 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2)
     return float4(1,2,3,4);
 }
 
+// TODO: for mats:
+//    asfloat(inU0); \
+//    asint(inF0); \
+//    asuint(inF0); \
+
 // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
 #define MATFNS() \
     all(inF0); \
@@ -285,7 +302,6 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2)
     fmod(inF0, inF1); \
     frac(inF0); \
     frexp(inF0, inF1); \
-    fwidth(inF0); \
     ldexp(inF0, inF1); \
     log(inF0); \
     log10(inF0); \
index 1759c86..95363d5 100644 (file)
@@ -498,14 +498,24 @@ enum TOperator {
     // HLSL operations
     //
 
-    EOpClip,
+    EOpClip,                // discard if input value < 0
     EOpIsFinite,
-    EOpLog10,
-    EOpRcp,
-    EOpSaturate,
-    EOpSinCos,
-    EOpGenMul,  // mul(x,y) on any of mat/vec/scalars
-    EOpDst,
+    EOpLog10,               // base 10 log
+    EOpRcp,                 // 1/x
+    EOpSaturate,            // clamp from 0 to 1
+    EOpSinCos,              // sin and cos in out parameters
+    EOpGenMul,              // mul(x,y) on any of mat/vec/scalars
+    EOpDst,                 // x = 1, y=src0.y * src1.y, z=src0.z, w=src1.w
+    EOpInterlockedAdd,      // atomic ops, but uses [optional] out arg instead of return
+    EOpInterlockedAnd,      // ...
+    EOpInterlockedCompareExchange, // ...
+    EOpInterlockedCompareStore,    // ...
+    EOpInterlockedExchange, // ...
+    EOpInterlockedMax,      // ...
+    EOpInterlockedMin,      // ...
+    EOpInterlockedOr,       // ...
+    EOpInterlockedXor,      // ...
+
 };
 
 class TIntermTraverser;
index 2242501..2aa6b92 100644 (file)
@@ -80,7 +80,9 @@ INSTANTIATE_TEST_CASE_P(
         {"hlsl.float4.frag", "PixelShaderFunction"},
         {"hlsl.forLoop.frag", "PixelShaderFunction"},
         {"hlsl.if.frag", "PixelShaderFunction"},
+        {"hlsl.intrinsics.comp", "ComputeShaderFunction"},
         {"hlsl.intrinsics.frag", "PixelShaderFunction"},
+        {"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"},
         {"hlsl.intrinsics.negative.frag", "PixelShaderFunction"},
         {"hlsl.intrinsics.negative.vert", "VertexShaderFunction"},
         {"hlsl.intrinsics.vert", "VertexShaderFunction"},
index 2a2fe1a..cb80f29 100755 (executable)
@@ -771,6 +771,29 @@ void HlslParseContext::handleFunctionArgument(TFunction* function, TIntermTyped*
         arguments = newArg;
 }
 
+//
+// HLSL atomic operations have slightly different arguments than
+// GLSL/AST/SPIRV.  The semantics are converted below in decomposeIntrinsic.
+// This provides the post-decomposition equivalent opcode.
+//
+TOperator HlslParseContext::mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage)
+{
+    switch (op) {
+    case EOpInterlockedAdd:             return isImage ? EOpImageAtomicAdd : EOpAtomicAdd;
+    case EOpInterlockedAnd:             return isImage ? EOpImageAtomicAnd : EOpAtomicAnd;
+    case EOpInterlockedCompareExchange: return isImage ? EOpImageAtomicCompSwap : EOpAtomicCompSwap;
+    case EOpInterlockedMax:             return isImage ? EOpImageAtomicMax : EOpAtomicMax;
+    case EOpInterlockedMin:             return isImage ? EOpImageAtomicMin : EOpAtomicMin;
+    case EOpInterlockedOr:              return isImage ? EOpImageAtomicOr : EOpAtomicOr;
+    case EOpInterlockedXor:             return isImage ? EOpImageAtomicXor : EOpAtomicXor;
+    case EOpInterlockedExchange:        return isImage ? EOpImageAtomicExchange : EOpAtomicExchange;
+    case EOpInterlockedCompareStore:  // TODO: ... 
+    default:
+        error(loc, "unknown atomic operation", "unknown op", "");
+        return EOpNull;
+    }
+}
+
 // Optionally decompose intrinsics to AST opcodes.
 //
 void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments)
@@ -825,6 +848,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
             clamp->getSequence().push_back(intermediate.addConstantUnion(1, type0, loc, true));
             clamp->setLoc(loc);
             clamp->setType(node->getType());
+            clamp->getWritableType().getQualifier().makeTemporary();
             node = clamp;
 
             break;
@@ -944,6 +968,61 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
             break;
         }
 
+    case EOpInterlockedAdd: // optional last argument (if present) is assigned from return value
+    case EOpInterlockedMin: // ...
+    case EOpInterlockedMax: // ...
+    case EOpInterlockedAnd: // ...
+    case EOpInterlockedOr:  // ...
+    case EOpInterlockedXor: // ...
+    case EOpInterlockedExchange: // always has output arg
+        {
+            TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped();
+            TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped();
+
+            const bool isImage = arg0->getType().isImage();
+            const TOperator atomicOp = mapAtomicOp(loc, op, isImage);
+
+            if (argAggregate->getSequence().size() > 2) {
+                // optional output param is present.  return value goes to arg2.
+                TIntermTyped* arg2 = argAggregate->getSequence()[2]->getAsTyped();
+
+                TIntermAggregate* atomic = new TIntermAggregate(atomicOp);
+                atomic->getSequence().push_back(arg0);
+                atomic->getSequence().push_back(arg1);
+                atomic->setLoc(loc);
+                atomic->setType(arg0->getType());
+                atomic->getWritableType().getQualifier().makeTemporary();
+
+                node = intermediate.addAssign(EOpAssign, arg2, atomic, loc);
+            } else {
+                // Set the matching operator.  Since output is absent, this is all we need to do.
+                node->getAsAggregate()->setOperator(atomicOp);
+            }
+
+            break;
+        }
+
+    case EOpInterlockedCompareExchange:
+        {
+            TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped();  // dest
+            TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped();  // cmp
+            TIntermTyped* arg2 = argAggregate->getSequence()[2]->getAsTyped();  // value
+            TIntermTyped* arg3 = argAggregate->getSequence()[3]->getAsTyped();  // orig
+
+            const bool isImage = arg0->getType().isImage();
+            TIntermAggregate* atomic = new TIntermAggregate(mapAtomicOp(loc, op, isImage));
+            atomic->getSequence().push_back(arg0);
+            atomic->getSequence().push_back(arg1);
+            atomic->getSequence().push_back(arg2);
+            atomic->setLoc(loc);
+            atomic->setType(arg2->getType());
+            atomic->getWritableType().getQualifier().makeTemporary();
+
+            node = intermediate.addAssign(EOpAssign, arg3, atomic, loc);
+            
+            break;
+        }
+
     default:
         break; // most pass through unchanged
     }
index a50bb95..bcc2202 100755 (executable)
@@ -155,6 +155,7 @@ protected:
     TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable);
     TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer);
     TOperator mapTypeToConstructorOp(const TType&) const;
+    TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage);
     void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken,
                        const char* szExtraInfoFormat, TPrefixType prefix,
                        va_list args);
index b676a8e..6643e16 100755 (executable)
@@ -296,20 +296,26 @@ void TBuiltInParseablesHlsl::initialize(int version, EProfile profile, int spv,
         { "fmod",                             nullptr, nullptr,   "SVM,",       "F,",     EShLangAll },
         { "frac",                             nullptr, nullptr,   "SVM",        "F",      EShLangAll },
         { "frexp",                            nullptr, nullptr,   "SVM,",       "F,",     EShLangAll },
-        { "fwidth",                           nullptr, nullptr,   "SVM",        "F",      EShLangAll },
+        { "fwidth",                           nullptr, nullptr,   "SVM",        "F",      EShLangFragmentMask },
         { "GetRenderTargetSampleCount",       "S",     "U",       "-",          "-",      EShLangAll },
         { "GetRenderTargetSamplePosition",    "V2",    "F",       "V1",         "I",      EShLangAll },
         { "GroupMemoryBarrier",               nullptr, nullptr,   "-",          "-",      EShLangComputeMask },
         { "GroupMemoryBarrierWithGroupSync",  nullptr, nullptr,   "-",          "-",      EShLangComputeMask },
         { "InterlockedAdd",                   "-",     "-",       "SVM,,>",     "UI,,",   EShLangFragmentMask | EShLangComputeMask },
+        { "InterlockedAdd",                   "-",     "-",       "SVM,",       "UI,",    EShLangFragmentMask | EShLangComputeMask },
         { "InterlockedAnd",                   "-",     "-",       "SVM,,>",     "UI,,",   EShLangFragmentMask | EShLangComputeMask },
+        { "InterlockedAnd",                   "-",     "-",       "SVM,",       "UI,",    EShLangFragmentMask | EShLangComputeMask },
         { "InterlockedCompareExchange",       "-",     "-",       "SVM,,,>",    "UI,,,",  EShLangFragmentMask | EShLangComputeMask },
         { "InterlockedCompareStore",          "-",     "-",       "SVM,,",      "UI,,",   EShLangFragmentMask | EShLangComputeMask },
         { "InterlockedExchange",              "-",     "-",       "SVM,,>",     "UI,,",   EShLangFragmentMask | EShLangComputeMask },
         { "InterlockedMax",                   "-",     "-",       "SVM,,>",     "UI,,",   EShLangFragmentMask | EShLangComputeMask },
+        { "InterlockedMax",                   "-",     "-",       "SVM,",       "UI,",    EShLangFragmentMask | EShLangComputeMask },
         { "InterlockedMin",                   "-",     "-",       "SVM,,>",     "UI,,",   EShLangFragmentMask | EShLangComputeMask },
+        { "InterlockedMin",                   "-",     "-",       "SVM,",       "UI,",    EShLangFragmentMask | EShLangComputeMask },
         { "InterlockedOr",                    "-",     "-",       "SVM,,>",     "UI,,",   EShLangFragmentMask | EShLangComputeMask },
+        { "InterlockedOr",                    "-",     "-",       "SVM,",       "UI,",    EShLangFragmentMask | EShLangComputeMask },
         { "InterlockedXor",                   "-",     "-",       "SVM,,>",     "UI,,",   EShLangFragmentMask | EShLangComputeMask },
+        { "InterlockedXor",                   "-",     "-",       "SVM,",       "UI,",    EShLangFragmentMask | EShLangComputeMask },
         { "isfinite",                         nullptr, "B" ,      "SVM",        "F",      EShLangAll },
         { "isinf",                            nullptr, "B" ,      "SVM",        "F",      EShLangAll },
         { "isnan",                            nullptr, "B" ,      "SVM",        "F",      EShLangAll },
@@ -516,11 +522,11 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, int
     // symbolTable.relateToOperator("AllMemoryBarrier");
     // symbolTable.relateToOperator("AllMemoryBarrierWithGroupSync");
     symbolTable.relateToOperator("any",                         EOpAny);
-    // symbolTable.relateToOperator("asdouble");
-    // symbolTable.relateToOperator("asfloat");
+    symbolTable.relateToOperator("asdouble",                    EOpUint64BitsToDouble);
+    symbolTable.relateToOperator("asfloat",                     EOpIntBitsToFloat);
     symbolTable.relateToOperator("asin",                        EOpAsin);
-    // symbolTable.relateToOperator("asint");
-    // symbolTable.relateToOperator("asuint");
+    symbolTable.relateToOperator("asint",                       EOpFloatBitsToInt);
+    symbolTable.relateToOperator("asuint",                      EOpFloatBitsToUint);
     symbolTable.relateToOperator("atan",                        EOpAtan);
     symbolTable.relateToOperator("atan2",                       EOpAtan);
     symbolTable.relateToOperator("ceil",                        EOpCeil);
@@ -566,15 +572,15 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, int
     // symbolTable.relateToOperator("GetRenderTargetSamplePosition");
     // symbolTable.relateToOperator("GroupMemoryBarrier");
     // symbolTable.relateToOperator("GroupMemoryBarrierWithGroupSync");
-    // symbolTable.relateToOperator("InterlockedAdd");
-    // symbolTable.relateToOperator("InterlockedAnd");
-    // symbolTable.relateToOperator("InterlockedCompareExchange");
-    // symbolTable.relateToOperator("InterlockedCompareStore");
-    // symbolTable.relateToOperator("InterlockedExchange");
-    // symbolTable.relateToOperator("InterlockedMax");
-    // symbolTable.relateToOperator("InterlockedMin");
-    // symbolTable.relateToOperator("InterlockedOr");
-    // symbolTable.relateToOperator("InterlockedXor");
+    symbolTable.relateToOperator("InterlockedAdd",              EOpInterlockedAdd);
+    symbolTable.relateToOperator("InterlockedAnd",              EOpInterlockedAnd);
+    symbolTable.relateToOperator("InterlockedCompareExchange",  EOpInterlockedCompareExchange);
+    symbolTable.relateToOperator("InterlockedCompareStore",     EOpInterlockedCompareStore);
+    symbolTable.relateToOperator("InterlockedExchange",         EOpInterlockedExchange);
+    symbolTable.relateToOperator("InterlockedMax",              EOpInterlockedMax);
+    symbolTable.relateToOperator("InterlockedMin",              EOpInterlockedMin);
+    symbolTable.relateToOperator("InterlockedOr",               EOpInterlockedOr);
+    symbolTable.relateToOperator("InterlockedXor",              EOpInterlockedXor);
     symbolTable.relateToOperator("isfinite",                    EOpIsFinite);
     symbolTable.relateToOperator("isinf",                       EOpIsInf);
     symbolTable.relateToOperator("isnan",                       EOpIsNan);