hlsl.intrinsics.comp
Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:19  Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; ( temp float)
0:19    Function Parameters: 
0:19      'inF0' ( in float)
0:19      'inF1' ( in float)
0:19      'inF2' ( in float)
0:19      'inU0' ( in uint)
0:19      'inU1' ( in uint)
0:?     Sequence
0:23      all ( temp bool)
0:23        Convert float to bool ( temp bool)
0:23          'inF0' ( in float)
0:26      AtomicAdd ( temp uint)
0:26        'gs_ua' ( shared uint)
0:26        'gs_ub' ( shared uint)
0:27      move second child to first child ( temp uint)
0:27        'out_u1' ( temp uint)
0:27        AtomicAdd ( temp uint)
0:27          'gs_ua' ( shared uint)
0:27          'gs_ub' ( shared uint)
0:28      AtomicAnd ( temp uint)
0:28        'gs_ua' ( shared uint)
0:28        'gs_ub' ( shared uint)
0:29      move second child to first child ( temp uint)
0:29        'out_u1' ( temp uint)
0:29        AtomicAnd ( temp uint)
0:29          'gs_ua' ( shared uint)
0:29          'gs_ub' ( shared uint)
0:30      move second child to first child ( temp uint)
0:30        'out_u1' ( temp uint)
0:30        AtomicCompSwap ( temp uint)
0:30          'gs_ua' ( shared uint)
0:30          'gs_ub' ( shared uint)
0:30          'gs_uc' ( shared uint)
0:31      move second child to first child ( temp uint)
0:31        'out_u1' ( temp uint)
0:31        AtomicExchange ( temp uint)
0:31          'gs_ua' ( shared uint)
0:31          'gs_ub' ( shared uint)
0:32      AtomicMax ( temp uint)
0:32        'gs_ua' ( shared uint)
0:32        'gs_ub' ( shared uint)
0:33      move second child to first child ( temp uint)
0:33        'out_u1' ( temp uint)
0:33        AtomicMax ( temp uint)
0:33          'gs_ua' ( shared uint)
0:33          'gs_ub' ( shared uint)
0:34      AtomicMin ( temp uint)
0:34        'gs_ua' ( shared uint)
0:34        'gs_ub' ( shared uint)
0:35      move second child to first child ( temp uint)
0:35        'out_u1' ( temp uint)
0:35        AtomicMin ( temp uint)
0:35          'gs_ua' ( shared uint)
0:35          'gs_ub' ( shared uint)
0:36      AtomicOr ( temp uint)
0:36        'gs_ua' ( shared uint)
0:36        'gs_ub' ( shared uint)
0:37      move second child to first child ( temp uint)
0:37        'out_u1' ( temp uint)
0:37        AtomicOr ( temp uint)
0:37          'gs_ua' ( shared uint)
0:37          'gs_ub' ( shared uint)
0:38      AtomicXor ( temp uint)
0:38        'gs_ua' ( shared uint)
0:38        'gs_ub' ( shared uint)
0:39      move second child to first child ( temp uint)
0:39        'out_u1' ( temp uint)
0:39        AtomicXor ( temp uint)
0:39          'gs_ua' ( shared uint)
0:39          'gs_ub' ( shared uint)
0:41      AtomicAdd ( temp float)
0:41        'gs_fa' ( shared float)
0:41        'gs_fb' ( shared float)
0:45      Branch: Return with expression
0:45        Constant:
0:45          0.000000
0:49  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float)
0:49    Function Parameters: 
0:49      'inF0' ( in 1-component vector of float)
0:49      'inF1' ( in 1-component vector of float)
0:49      'inF2' ( in 1-component vector of float)
0:?     Sequence
0:51      Branch: Return with expression
0:51        Constant:
0:51          0.000000
0:55  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float)
0:55    Function Parameters: 
0:55      'inF0' ( in 2-component vector of float)
0:55      'inF1' ( in 2-component vector of float)
0:55      'inF2' ( in 2-component vector of float)
0:55      'inU0' ( in 2-component vector of uint)
0:55      'inU1' ( in 2-component vector of uint)
0:?     Sequence
0:59      all ( temp bool)
0:59        Convert float to bool ( temp 2-component vector of bool)
0:59          'inF0' ( in 2-component vector of float)
0:62      AtomicAdd ( temp 2-component vector of uint)
0:62        'gs_ua2' ( shared 2-component vector of uint)
0:62        'gs_ub2' ( shared 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        AtomicAdd ( temp 2-component vector of uint)
0:63          'gs_ua2' ( shared 2-component vector of uint)
0:63          'gs_ub2' ( shared 2-component vector of uint)
0:64      AtomicAnd ( temp 2-component vector of uint)
0:64        'gs_ua2' ( shared 2-component vector of uint)
0:64        'gs_ub2' ( shared 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        AtomicAnd ( temp 2-component vector of uint)
0:65          'gs_ua2' ( shared 2-component vector of uint)
0:65          'gs_ub2' ( shared 2-component vector of uint)
0:66      move second child to first child ( temp 2-component vector of uint)
0:66        'out_u2' ( temp 2-component vector of uint)
0:66        AtomicCompSwap ( temp 2-component vector of uint)
0:66          'gs_ua2' ( shared 2-component vector of uint)
0:66          'gs_ub2' ( shared 2-component vector of uint)
0:66          'gs_uc2' ( shared 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        AtomicExchange ( temp 2-component vector of uint)
0:67          'gs_ua2' ( shared 2-component vector of uint)
0:67          'gs_ub2' ( shared 2-component vector of uint)
0:68      AtomicMax ( temp 2-component vector of uint)
0:68        'gs_ua2' ( shared 2-component vector of uint)
0:68        'gs_ub2' ( shared 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        AtomicMax ( temp 2-component vector of uint)
0:69          'gs_ua2' ( shared 2-component vector of uint)
0:69          'gs_ub2' ( shared 2-component vector of uint)
0:70      AtomicMin ( temp 2-component vector of uint)
0:70        'gs_ua2' ( shared 2-component vector of uint)
0:70        'gs_ub2' ( shared 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        AtomicMin ( temp 2-component vector of uint)
0:71          'gs_ua2' ( shared 2-component vector of uint)
0:71          'gs_ub2' ( shared 2-component vector of uint)
0:72      AtomicOr ( temp 2-component vector of uint)
0:72        'gs_ua2' ( shared 2-component vector of uint)
0:72        'gs_ub2' ( shared 2-component vector of uint)
0:73      move second child to first child ( temp 2-component vector of uint)
0:73        'out_u2' ( temp 2-component vector of uint)
0:73        AtomicOr ( temp 2-component vector of uint)
0:73          'gs_ua2' ( shared 2-component vector of uint)
0:73          'gs_ub2' ( shared 2-component vector of uint)
0:74      AtomicXor ( temp 2-component vector of uint)
0:74        'gs_ua2' ( shared 2-component vector of uint)
0:74        'gs_ub2' ( shared 2-component vector of uint)
0:75      move second child to first child ( temp 2-component vector of uint)
0:75        'out_u2' ( temp 2-component vector of uint)
0:75        AtomicXor ( temp 2-component vector of uint)
0:75          'gs_ua2' ( shared 2-component vector of uint)
0:75          'gs_ub2' ( shared 2-component vector of uint)
0:78      Branch: Return with expression
0:78        Constant:
0:78          1.000000
0:78          2.000000
0:82  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
0:82    Function Parameters: 
0:82      'inF0' ( in 3-component vector of float)
0:82      'inF1' ( in 3-component vector of float)
0:82      'inF2' ( in 3-component vector of float)
0:82      'inU0' ( in 3-component vector of uint)
0:82      'inU1' ( in 3-component vector of uint)
0:?     Sequence
0:86      all ( temp bool)
0:86        Convert float to bool ( temp 3-component vector of bool)
0:86          'inF0' ( in 3-component vector of float)
0:89      AtomicAdd ( temp 3-component vector of uint)
0:89        'gs_ua3' ( shared 3-component vector of uint)
0:89        'gs_ub3' ( shared 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        AtomicAdd ( temp 3-component vector of uint)
0:90          'gs_ua3' ( shared 3-component vector of uint)
0:90          'gs_ub3' ( shared 3-component vector of uint)
0:91      AtomicAnd ( temp 3-component vector of uint)
0:91        'gs_ua3' ( shared 3-component vector of uint)
0:91        'gs_ub3' ( shared 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        AtomicAnd ( temp 3-component vector of uint)
0:92          'gs_ua3' ( shared 3-component vector of uint)
0:92          'gs_ub3' ( shared 3-component vector of uint)
0:93      move second child to first child ( temp 3-component vector of uint)
0:93        'out_u3' ( temp 3-component vector of uint)
0:93        AtomicCompSwap ( temp 3-component vector of uint)
0:93          'gs_ua3' ( shared 3-component vector of uint)
0:93          'gs_ub3' ( shared 3-component vector of uint)
0:93          'gs_uc3' ( shared 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        AtomicExchange ( temp 3-component vector of uint)
0:94          'gs_ua3' ( shared 3-component vector of uint)
0:94          'gs_ub3' ( shared 3-component vector of uint)
0:95      AtomicMax ( temp 3-component vector of uint)
0:95        'gs_ua3' ( shared 3-component vector of uint)
0:95        'gs_ub3' ( shared 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        AtomicMax ( temp 3-component vector of uint)
0:96          'gs_ua3' ( shared 3-component vector of uint)
0:96          'gs_ub3' ( shared 3-component vector of uint)
0:97      AtomicMin ( temp 3-component vector of uint)
0:97        'gs_ua3' ( shared 3-component vector of uint)
0:97        'gs_ub3' ( shared 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        AtomicMin ( temp 3-component vector of uint)
0:98          'gs_ua3' ( shared 3-component vector of uint)
0:98          'gs_ub3' ( shared 3-component vector of uint)
0:99      AtomicOr ( temp 3-component vector of uint)
0:99        'gs_ua3' ( shared 3-component vector of uint)
0:99        'gs_ub3' ( shared 3-component vector of uint)
0:100      move second child to first child ( temp 3-component vector of uint)
0:100        'out_u3' ( temp 3-component vector of uint)
0:100        AtomicOr ( temp 3-component vector of uint)
0:100          'gs_ua3' ( shared 3-component vector of uint)
0:100          'gs_ub3' ( shared 3-component vector of uint)
0:101      AtomicXor ( temp 3-component vector of uint)
0:101        'gs_ua3' ( shared 3-component vector of uint)
0:101        'gs_ub3' ( shared 3-component vector of uint)
0:102      move second child to first child ( temp 3-component vector of uint)
0:102        'out_u3' ( temp 3-component vector of uint)
0:102        AtomicXor ( temp 3-component vector of uint)
0:102          'gs_ua3' ( shared 3-component vector of uint)
0:102          'gs_ub3' ( shared 3-component vector of uint)
0:105      Branch: Return with expression
0:105        Constant:
0:105          1.000000
0:105          2.000000
0:105          3.000000
0:109  Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
0:109    Function Parameters: 
0:109      'inF0' ( in 4-component vector of float)
0:109      'inF1' ( in 4-component vector of float)
0:109      'inF2' ( in 4-component vector of float)
0:109      'inU0' ( in 4-component vector of uint)
0:109      'inU1' ( in 4-component vector of uint)
0:?     Sequence
0:113      all ( temp bool)
0:113        Convert float to bool ( temp 4-component vector of bool)
0:113          'inF0' ( in 4-component vector of float)
0:116      AtomicAdd ( temp 4-component vector of uint)
0:116        'gs_ua4' ( shared 4-component vector of uint)
0:116        'gs_ub4' ( shared 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        AtomicAdd ( temp 4-component vector of uint)
0:117          'gs_ua4' ( shared 4-component vector of uint)
0:117          'gs_ub4' ( shared 4-component vector of uint)
0:118      AtomicAnd ( temp 4-component vector of uint)
0:118        'gs_ua4' ( shared 4-component vector of uint)
0:118        'gs_ub4' ( shared 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        AtomicAnd ( temp 4-component vector of uint)
0:119          'gs_ua4' ( shared 4-component vector of uint)
0:119          'gs_ub4' ( shared 4-component vector of uint)
0:120      move second child to first child ( temp 4-component vector of uint)
0:120        'out_u4' ( temp 4-component vector of uint)
0:120        AtomicCompSwap ( temp 4-component vector of uint)
0:120          'gs_ua4' ( shared 4-component vector of uint)
0:120          'gs_ub4' ( shared 4-component vector of uint)
0:120          'gs_uc4' ( shared 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        AtomicExchange ( temp 4-component vector of uint)
0:121          'gs_ua4' ( shared 4-component vector of uint)
0:121          'gs_ub4' ( shared 4-component vector of uint)
0:122      AtomicMax ( temp 4-component vector of uint)
0:122        'gs_ua4' ( shared 4-component vector of uint)
0:122        'gs_ub4' ( shared 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        AtomicMax ( temp 4-component vector of uint)
0:123          'gs_ua4' ( shared 4-component vector of uint)
0:123          'gs_ub4' ( shared 4-component vector of uint)
0:124      AtomicMin ( temp 4-component vector of uint)
0:124        'gs_ua4' ( shared 4-component vector of uint)
0:124        'gs_ub4' ( shared 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        AtomicMin ( temp 4-component vector of uint)
0:125          'gs_ua4' ( shared 4-component vector of uint)
0:125          'gs_ub4' ( shared 4-component vector of uint)
0:126      AtomicOr ( temp 4-component vector of uint)
0:126        'gs_ua4' ( shared 4-component vector of uint)
0:126        'gs_ub4' ( shared 4-component vector of uint)
0:127      move second child to first child ( temp 4-component vector of uint)
0:127        'out_u4' ( temp 4-component vector of uint)
0:127        AtomicOr ( temp 4-component vector of uint)
0:127          'gs_ua4' ( shared 4-component vector of uint)
0:127          'gs_ub4' ( shared 4-component vector of uint)
0:128      AtomicXor ( temp 4-component vector of uint)
0:128        'gs_ua4' ( shared 4-component vector of uint)
0:128        'gs_ub4' ( shared 4-component vector of uint)
0:129      move second child to first child ( temp 4-component vector of uint)
0:129        'out_u4' ( temp 4-component vector of uint)
0:129        AtomicXor ( temp 4-component vector of uint)
0:129          'gs_ua4' ( shared 4-component vector of uint)
0:129          'gs_ub4' ( shared 4-component vector of uint)
0:132      Branch: Return with expression
0:132        Constant:
0:132          1.000000
0:132          2.000000
0:132          3.000000
0:132          4.000000
0:109  Function Definition: ComputeShaderFunction( ( temp void)
0:109    Function Parameters: 
0:?     Sequence
0:109      move second child to first child ( temp 4-component vector of float)
0:?         'inF0' ( temp 4-component vector of float)
0:?         'inF0' (layout( location=0) in 4-component vector of float)
0:109      move second child to first child ( temp 4-component vector of float)
0:?         'inF1' ( temp 4-component vector of float)
0:?         'inF1' (layout( location=1) in 4-component vector of float)
0:109      move second child to first child ( temp 4-component vector of float)
0:?         'inF2' ( temp 4-component vector of float)
0:?         'inF2' (layout( location=2) in 4-component vector of float)
0:109      move second child to first child ( temp 4-component vector of uint)
0:?         'inU0' ( temp 4-component vector of uint)
0:?         'inU0' (layout( location=3) in 4-component vector of uint)
0:109      move second child to first child ( temp 4-component vector of uint)
0:?         'inU1' ( temp 4-component vector of uint)
0:?         'inU1' (layout( location=4) in 4-component vector of uint)
0:109      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:109        Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
0:?           'inF0' ( temp 4-component vector of float)
0:?           'inF1' ( temp 4-component vector of float)
0:?           'inF2' ( temp 4-component vector of float)
0:?           'inU0' ( temp 4-component vector of uint)
0:?           'inU1' ( temp 4-component vector of uint)
0:?   Linker Objects
0:?     'gs_ua' ( shared uint)
0:?     'gs_ub' ( shared uint)
0:?     'gs_uc' ( shared uint)
0:?     'gs_ua2' ( shared 2-component vector of uint)
0:?     'gs_ub2' ( shared 2-component vector of uint)
0:?     'gs_uc2' ( shared 2-component vector of uint)
0:?     'gs_ua3' ( shared 3-component vector of uint)
0:?     'gs_ub3' ( shared 3-component vector of uint)
0:?     'gs_uc3' ( shared 3-component vector of uint)
0:?     'gs_ua4' ( shared 4-component vector of uint)
0:?     'gs_ub4' ( shared 4-component vector of uint)
0:?     'gs_uc4' ( shared 4-component vector of uint)
0:?     'gs_fa' ( shared float)
0:?     'gs_fb' ( shared float)
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'inF0' (layout( location=0) in 4-component vector of float)
0:?     'inF1' (layout( location=1) in 4-component vector of float)
0:?     'inF2' (layout( location=2) in 4-component vector of float)
0:?     'inU0' (layout( location=3) in 4-component vector of uint)
0:?     'inU1' (layout( location=4) in 4-component vector of uint)


Linked compute stage:


Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:19  Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; ( temp float)
0:19    Function Parameters: 
0:19      'inF0' ( in float)
0:19      'inF1' ( in float)
0:19      'inF2' ( in float)
0:19      'inU0' ( in uint)
0:19      'inU1' ( in uint)
0:?     Sequence
0:23      all ( temp bool)
0:23        Convert float to bool ( temp bool)
0:23          'inF0' ( in float)
0:26      AtomicAdd ( temp uint)
0:26        'gs_ua' ( shared uint)
0:26        'gs_ub' ( shared uint)
0:27      move second child to first child ( temp uint)
0:27        'out_u1' ( temp uint)
0:27        AtomicAdd ( temp uint)
0:27          'gs_ua' ( shared uint)
0:27          'gs_ub' ( shared uint)
0:28      AtomicAnd ( temp uint)
0:28        'gs_ua' ( shared uint)
0:28        'gs_ub' ( shared uint)
0:29      move second child to first child ( temp uint)
0:29        'out_u1' ( temp uint)
0:29        AtomicAnd ( temp uint)
0:29          'gs_ua' ( shared uint)
0:29          'gs_ub' ( shared uint)
0:30      move second child to first child ( temp uint)
0:30        'out_u1' ( temp uint)
0:30        AtomicCompSwap ( temp uint)
0:30          'gs_ua' ( shared uint)
0:30          'gs_ub' ( shared uint)
0:30          'gs_uc' ( shared uint)
0:31      move second child to first child ( temp uint)
0:31        'out_u1' ( temp uint)
0:31        AtomicExchange ( temp uint)
0:31          'gs_ua' ( shared uint)
0:31          'gs_ub' ( shared uint)
0:32      AtomicMax ( temp uint)
0:32        'gs_ua' ( shared uint)
0:32        'gs_ub' ( shared uint)
0:33      move second child to first child ( temp uint)
0:33        'out_u1' ( temp uint)
0:33        AtomicMax ( temp uint)
0:33          'gs_ua' ( shared uint)
0:33          'gs_ub' ( shared uint)
0:34      AtomicMin ( temp uint)
0:34        'gs_ua' ( shared uint)
0:34        'gs_ub' ( shared uint)
0:35      move second child to first child ( temp uint)
0:35        'out_u1' ( temp uint)
0:35        AtomicMin ( temp uint)
0:35          'gs_ua' ( shared uint)
0:35          'gs_ub' ( shared uint)
0:36      AtomicOr ( temp uint)
0:36        'gs_ua' ( shared uint)
0:36        'gs_ub' ( shared uint)
0:37      move second child to first child ( temp uint)
0:37        'out_u1' ( temp uint)
0:37        AtomicOr ( temp uint)
0:37          'gs_ua' ( shared uint)
0:37          'gs_ub' ( shared uint)
0:38      AtomicXor ( temp uint)
0:38        'gs_ua' ( shared uint)
0:38        'gs_ub' ( shared uint)
0:39      move second child to first child ( temp uint)
0:39        'out_u1' ( temp uint)
0:39        AtomicXor ( temp uint)
0:39          'gs_ua' ( shared uint)
0:39          'gs_ub' ( shared uint)
0:41      AtomicAdd ( temp float)
0:41        'gs_fa' ( shared float)
0:41        'gs_fb' ( shared float)
0:45      Branch: Return with expression
0:45        Constant:
0:45          0.000000
0:49  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float)
0:49    Function Parameters: 
0:49      'inF0' ( in 1-component vector of float)
0:49      'inF1' ( in 1-component vector of float)
0:49      'inF2' ( in 1-component vector of float)
0:?     Sequence
0:51      Branch: Return with expression
0:51        Constant:
0:51          0.000000
0:55  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float)
0:55    Function Parameters: 
0:55      'inF0' ( in 2-component vector of float)
0:55      'inF1' ( in 2-component vector of float)
0:55      'inF2' ( in 2-component vector of float)
0:55      'inU0' ( in 2-component vector of uint)
0:55      'inU1' ( in 2-component vector of uint)
0:?     Sequence
0:59      all ( temp bool)
0:59        Convert float to bool ( temp 2-component vector of bool)
0:59          'inF0' ( in 2-component vector of float)
0:62      AtomicAdd ( temp 2-component vector of uint)
0:62        'gs_ua2' ( shared 2-component vector of uint)
0:62        'gs_ub2' ( shared 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        AtomicAdd ( temp 2-component vector of uint)
0:63          'gs_ua2' ( shared 2-component vector of uint)
0:63          'gs_ub2' ( shared 2-component vector of uint)
0:64      AtomicAnd ( temp 2-component vector of uint)
0:64        'gs_ua2' ( shared 2-component vector of uint)
0:64        'gs_ub2' ( shared 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        AtomicAnd ( temp 2-component vector of uint)
0:65          'gs_ua2' ( shared 2-component vector of uint)
0:65          'gs_ub2' ( shared 2-component vector of uint)
0:66      move second child to first child ( temp 2-component vector of uint)
0:66        'out_u2' ( temp 2-component vector of uint)
0:66        AtomicCompSwap ( temp 2-component vector of uint)
0:66          'gs_ua2' ( shared 2-component vector of uint)
0:66          'gs_ub2' ( shared 2-component vector of uint)
0:66          'gs_uc2' ( shared 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        AtomicExchange ( temp 2-component vector of uint)
0:67          'gs_ua2' ( shared 2-component vector of uint)
0:67          'gs_ub2' ( shared 2-component vector of uint)
0:68      AtomicMax ( temp 2-component vector of uint)
0:68        'gs_ua2' ( shared 2-component vector of uint)
0:68        'gs_ub2' ( shared 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        AtomicMax ( temp 2-component vector of uint)
0:69          'gs_ua2' ( shared 2-component vector of uint)
0:69          'gs_ub2' ( shared 2-component vector of uint)
0:70      AtomicMin ( temp 2-component vector of uint)
0:70        'gs_ua2' ( shared 2-component vector of uint)
0:70        'gs_ub2' ( shared 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        AtomicMin ( temp 2-component vector of uint)
0:71          'gs_ua2' ( shared 2-component vector of uint)
0:71          'gs_ub2' ( shared 2-component vector of uint)
0:72      AtomicOr ( temp 2-component vector of uint)
0:72        'gs_ua2' ( shared 2-component vector of uint)
0:72        'gs_ub2' ( shared 2-component vector of uint)
0:73      move second child to first child ( temp 2-component vector of uint)
0:73        'out_u2' ( temp 2-component vector of uint)
0:73        AtomicOr ( temp 2-component vector of uint)
0:73          'gs_ua2' ( shared 2-component vector of uint)
0:73          'gs_ub2' ( shared 2-component vector of uint)
0:74      AtomicXor ( temp 2-component vector of uint)
0:74        'gs_ua2' ( shared 2-component vector of uint)
0:74        'gs_ub2' ( shared 2-component vector of uint)
0:75      move second child to first child ( temp 2-component vector of uint)
0:75        'out_u2' ( temp 2-component vector of uint)
0:75        AtomicXor ( temp 2-component vector of uint)
0:75          'gs_ua2' ( shared 2-component vector of uint)
0:75          'gs_ub2' ( shared 2-component vector of uint)
0:78      Branch: Return with expression
0:78        Constant:
0:78          1.000000
0:78          2.000000
0:82  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
0:82    Function Parameters: 
0:82      'inF0' ( in 3-component vector of float)
0:82      'inF1' ( in 3-component vector of float)
0:82      'inF2' ( in 3-component vector of float)
0:82      'inU0' ( in 3-component vector of uint)
0:82      'inU1' ( in 3-component vector of uint)
0:?     Sequence
0:86      all ( temp bool)
0:86        Convert float to bool ( temp 3-component vector of bool)
0:86          'inF0' ( in 3-component vector of float)
0:89      AtomicAdd ( temp 3-component vector of uint)
0:89        'gs_ua3' ( shared 3-component vector of uint)
0:89        'gs_ub3' ( shared 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        AtomicAdd ( temp 3-component vector of uint)
0:90          'gs_ua3' ( shared 3-component vector of uint)
0:90          'gs_ub3' ( shared 3-component vector of uint)
0:91      AtomicAnd ( temp 3-component vector of uint)
0:91        'gs_ua3' ( shared 3-component vector of uint)
0:91        'gs_ub3' ( shared 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        AtomicAnd ( temp 3-component vector of uint)
0:92          'gs_ua3' ( shared 3-component vector of uint)
0:92          'gs_ub3' ( shared 3-component vector of uint)
0:93      move second child to first child ( temp 3-component vector of uint)
0:93        'out_u3' ( temp 3-component vector of uint)
0:93        AtomicCompSwap ( temp 3-component vector of uint)
0:93          'gs_ua3' ( shared 3-component vector of uint)
0:93          'gs_ub3' ( shared 3-component vector of uint)
0:93          'gs_uc3' ( shared 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        AtomicExchange ( temp 3-component vector of uint)
0:94          'gs_ua3' ( shared 3-component vector of uint)
0:94          'gs_ub3' ( shared 3-component vector of uint)
0:95      AtomicMax ( temp 3-component vector of uint)
0:95        'gs_ua3' ( shared 3-component vector of uint)
0:95        'gs_ub3' ( shared 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        AtomicMax ( temp 3-component vector of uint)
0:96          'gs_ua3' ( shared 3-component vector of uint)
0:96          'gs_ub3' ( shared 3-component vector of uint)
0:97      AtomicMin ( temp 3-component vector of uint)
0:97        'gs_ua3' ( shared 3-component vector of uint)
0:97        'gs_ub3' ( shared 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        AtomicMin ( temp 3-component vector of uint)
0:98          'gs_ua3' ( shared 3-component vector of uint)
0:98          'gs_ub3' ( shared 3-component vector of uint)
0:99      AtomicOr ( temp 3-component vector of uint)
0:99        'gs_ua3' ( shared 3-component vector of uint)
0:99        'gs_ub3' ( shared 3-component vector of uint)
0:100      move second child to first child ( temp 3-component vector of uint)
0:100        'out_u3' ( temp 3-component vector of uint)
0:100        AtomicOr ( temp 3-component vector of uint)
0:100          'gs_ua3' ( shared 3-component vector of uint)
0:100          'gs_ub3' ( shared 3-component vector of uint)
0:101      AtomicXor ( temp 3-component vector of uint)
0:101        'gs_ua3' ( shared 3-component vector of uint)
0:101        'gs_ub3' ( shared 3-component vector of uint)
0:102      move second child to first child ( temp 3-component vector of uint)
0:102        'out_u3' ( temp 3-component vector of uint)
0:102        AtomicXor ( temp 3-component vector of uint)
0:102          'gs_ua3' ( shared 3-component vector of uint)
0:102          'gs_ub3' ( shared 3-component vector of uint)
0:105      Branch: Return with expression
0:105        Constant:
0:105          1.000000
0:105          2.000000
0:105          3.000000
0:109  Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
0:109    Function Parameters: 
0:109      'inF0' ( in 4-component vector of float)
0:109      'inF1' ( in 4-component vector of float)
0:109      'inF2' ( in 4-component vector of float)
0:109      'inU0' ( in 4-component vector of uint)
0:109      'inU1' ( in 4-component vector of uint)
0:?     Sequence
0:113      all ( temp bool)
0:113        Convert float to bool ( temp 4-component vector of bool)
0:113          'inF0' ( in 4-component vector of float)
0:116      AtomicAdd ( temp 4-component vector of uint)
0:116        'gs_ua4' ( shared 4-component vector of uint)
0:116        'gs_ub4' ( shared 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        AtomicAdd ( temp 4-component vector of uint)
0:117          'gs_ua4' ( shared 4-component vector of uint)
0:117          'gs_ub4' ( shared 4-component vector of uint)
0:118      AtomicAnd ( temp 4-component vector of uint)
0:118        'gs_ua4' ( shared 4-component vector of uint)
0:118        'gs_ub4' ( shared 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        AtomicAnd ( temp 4-component vector of uint)
0:119          'gs_ua4' ( shared 4-component vector of uint)
0:119          'gs_ub4' ( shared 4-component vector of uint)
0:120      move second child to first child ( temp 4-component vector of uint)
0:120        'out_u4' ( temp 4-component vector of uint)
0:120        AtomicCompSwap ( temp 4-component vector of uint)
0:120          'gs_ua4' ( shared 4-component vector of uint)
0:120          'gs_ub4' ( shared 4-component vector of uint)
0:120          'gs_uc4' ( shared 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        AtomicExchange ( temp 4-component vector of uint)
0:121          'gs_ua4' ( shared 4-component vector of uint)
0:121          'gs_ub4' ( shared 4-component vector of uint)
0:122      AtomicMax ( temp 4-component vector of uint)
0:122        'gs_ua4' ( shared 4-component vector of uint)
0:122        'gs_ub4' ( shared 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        AtomicMax ( temp 4-component vector of uint)
0:123          'gs_ua4' ( shared 4-component vector of uint)
0:123          'gs_ub4' ( shared 4-component vector of uint)
0:124      AtomicMin ( temp 4-component vector of uint)
0:124        'gs_ua4' ( shared 4-component vector of uint)
0:124        'gs_ub4' ( shared 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        AtomicMin ( temp 4-component vector of uint)
0:125          'gs_ua4' ( shared 4-component vector of uint)
0:125          'gs_ub4' ( shared 4-component vector of uint)
0:126      AtomicOr ( temp 4-component vector of uint)
0:126        'gs_ua4' ( shared 4-component vector of uint)
0:126        'gs_ub4' ( shared 4-component vector of uint)
0:127      move second child to first child ( temp 4-component vector of uint)
0:127        'out_u4' ( temp 4-component vector of uint)
0:127        AtomicOr ( temp 4-component vector of uint)
0:127          'gs_ua4' ( shared 4-component vector of uint)
0:127          'gs_ub4' ( shared 4-component vector of uint)
0:128      AtomicXor ( temp 4-component vector of uint)
0:128        'gs_ua4' ( shared 4-component vector of uint)
0:128        'gs_ub4' ( shared 4-component vector of uint)
0:129      move second child to first child ( temp 4-component vector of uint)
0:129        'out_u4' ( temp 4-component vector of uint)
0:129        AtomicXor ( temp 4-component vector of uint)
0:129          'gs_ua4' ( shared 4-component vector of uint)
0:129          'gs_ub4' ( shared 4-component vector of uint)
0:132      Branch: Return with expression
0:132        Constant:
0:132          1.000000
0:132          2.000000
0:132          3.000000
0:132          4.000000
0:109  Function Definition: ComputeShaderFunction( ( temp void)
0:109    Function Parameters: 
0:?     Sequence
0:109      move second child to first child ( temp 4-component vector of float)
0:?         'inF0' ( temp 4-component vector of float)
0:?         'inF0' (layout( location=0) in 4-component vector of float)
0:109      move second child to first child ( temp 4-component vector of float)
0:?         'inF1' ( temp 4-component vector of float)
0:?         'inF1' (layout( location=1) in 4-component vector of float)
0:109      move second child to first child ( temp 4-component vector of float)
0:?         'inF2' ( temp 4-component vector of float)
0:?         'inF2' (layout( location=2) in 4-component vector of float)
0:109      move second child to first child ( temp 4-component vector of uint)
0:?         'inU0' ( temp 4-component vector of uint)
0:?         'inU0' (layout( location=3) in 4-component vector of uint)
0:109      move second child to first child ( temp 4-component vector of uint)
0:?         'inU1' ( temp 4-component vector of uint)
0:?         'inU1' (layout( location=4) in 4-component vector of uint)
0:109      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:109        Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
0:?           'inF0' ( temp 4-component vector of float)
0:?           'inF1' ( temp 4-component vector of float)
0:?           'inF2' ( temp 4-component vector of float)
0:?           'inU0' ( temp 4-component vector of uint)
0:?           'inU1' ( temp 4-component vector of uint)
0:?   Linker Objects
0:?     'gs_ua' ( shared uint)
0:?     'gs_ub' ( shared uint)
0:?     'gs_uc' ( shared uint)
0:?     'gs_ua2' ( shared 2-component vector of uint)
0:?     'gs_ub2' ( shared 2-component vector of uint)
0:?     'gs_uc2' ( shared 2-component vector of uint)
0:?     'gs_ua3' ( shared 3-component vector of uint)
0:?     'gs_ub3' ( shared 3-component vector of uint)
0:?     'gs_uc3' ( shared 3-component vector of uint)
0:?     'gs_ua4' ( shared 4-component vector of uint)
0:?     'gs_ub4' ( shared 4-component vector of uint)
0:?     'gs_uc4' ( shared 4-component vector of uint)
0:?     'gs_fa' ( shared float)
0:?     'gs_fb' ( shared float)
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'inF0' (layout( location=0) in 4-component vector of float)
0:?     'inF1' (layout( location=1) in 4-component vector of float)
0:?     'inF2' (layout( location=2) in 4-component vector of float)
0:?     'inU0' (layout( location=3) in 4-component vector of uint)
0:?     'inU1' (layout( location=4) in 4-component vector of uint)

Validation failed
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 270

                              Capability Shader
                              Capability AtomicFloat32AddEXT
                              Extension  "SPV_EXT_shader_atomic_float_add"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "ComputeShaderFunction" 242 245 248 252 255 258
                              ExecutionMode 4 LocalSize 1 1 1
                              Source HLSL 500
                              Name 4  "ComputeShaderFunction"
                              Name 16  "ComputeShaderFunctionS(f1;f1;f1;u1;u1;"
                              Name 11  "inF0"
                              Name 12  "inF1"
                              Name 13  "inF2"
                              Name 14  "inU0"
                              Name 15  "inU1"
                              Name 22  "ComputeShaderFunction1(vf1;vf1;vf1;"
                              Name 19  "inF0"
                              Name 20  "inF1"
                              Name 21  "inF2"
                              Name 34  "ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2;"
                              Name 29  "inF0"
                              Name 30  "inF1"
                              Name 31  "inF2"
                              Name 32  "inU0"
                              Name 33  "inU1"
                              Name 46  "ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3;"
                              Name 41  "inF0"
                              Name 42  "inF1"
                              Name 43  "inF2"
                              Name 44  "inU0"
                              Name 45  "inU1"
                              Name 58  "@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;"
                              Name 53  "inF0"
                              Name 54  "inF1"
                              Name 55  "inF2"
                              Name 56  "inU0"
                              Name 57  "inU1"
                              Name 66  "gs_ua"
                              Name 67  "gs_ub"
                              Name 72  "out_u1"
                              Name 80  "gs_uc"
                              Name 102  "gs_fa"
                              Name 103  "gs_fb"
                              Name 116  "gs_ua2"
                              Name 117  "gs_ub2"
                              Name 120  "out_u2"
                              Name 128  "gs_uc2"
                              Name 160  "gs_ua3"
                              Name 161  "gs_ub3"
                              Name 164  "out_u3"
                              Name 172  "gs_uc3"
                              Name 203  "gs_ua4"
                              Name 204  "gs_ub4"
                              Name 207  "out_u4"
                              Name 215  "gs_uc4"
                              Name 240  "inF0"
                              Name 242  "inF0"
                              Name 244  "inF1"
                              Name 245  "inF1"
                              Name 247  "inF2"
                              Name 248  "inF2"
                              Name 250  "inU0"
                              Name 252  "inU0"
                              Name 254  "inU1"
                              Name 255  "inU1"
                              Name 258  "@entryPointOutput"
                              Name 259  "param"
                              Name 261  "param"
                              Name 263  "param"
                              Name 265  "param"
                              Name 267  "param"
                              Decorate 242(inF0) Location 0
                              Decorate 245(inF1) Location 1
                              Decorate 248(inF2) Location 2
                              Decorate 252(inU0) Location 3
                              Decorate 255(inU1) Location 4
                              Decorate 258(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               8:             TypeInt 32 0
               9:             TypePointer Function 8(int)
              10:             TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 9(ptr) 9(ptr)
              18:             TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr)
              24:             TypeVector 6(float) 2
              25:             TypePointer Function 24(fvec2)
              26:             TypeVector 8(int) 2
              27:             TypePointer Function 26(ivec2)
              28:             TypeFunction 24(fvec2) 25(ptr) 25(ptr) 25(ptr) 27(ptr) 27(ptr)
              36:             TypeVector 6(float) 3
              37:             TypePointer Function 36(fvec3)
              38:             TypeVector 8(int) 3
              39:             TypePointer Function 38(ivec3)
              40:             TypeFunction 36(fvec3) 37(ptr) 37(ptr) 37(ptr) 39(ptr) 39(ptr)
              48:             TypeVector 6(float) 4
              49:             TypePointer Function 48(fvec4)
              50:             TypeVector 8(int) 4
              51:             TypePointer Function 50(ivec4)
              52:             TypeFunction 48(fvec4) 49(ptr) 49(ptr) 49(ptr) 51(ptr) 51(ptr)
              61:             TypeBool
              62:    6(float) Constant 0
              65:             TypePointer Workgroup 8(int)
       66(gs_ua):     65(ptr) Variable Workgroup
       67(gs_ub):     65(ptr) Variable Workgroup
              69:      8(int) Constant 1
              70:      8(int) Constant 0
       80(gs_uc):     65(ptr) Variable Workgroup
             101:             TypePointer Workgroup 6(float)
      102(gs_fa):    101(ptr) Variable Workgroup
      103(gs_fb):    101(ptr) Variable Workgroup
             111:             TypeVector 61(bool) 2
             112:   24(fvec2) ConstantComposite 62 62
             115:             TypePointer Workgroup 26(ivec2)
     116(gs_ua2):    115(ptr) Variable Workgroup
     117(gs_ub2):    115(ptr) Variable Workgroup
     128(gs_uc2):    115(ptr) Variable Workgroup
             149:    6(float) Constant 1065353216
             150:    6(float) Constant 1073741824
             151:   24(fvec2) ConstantComposite 149 150
             155:             TypeVector 61(bool) 3
             156:   36(fvec3) ConstantComposite 62 62 62
             159:             TypePointer Workgroup 38(ivec3)
     160(gs_ua3):    159(ptr) Variable Workgroup
     161(gs_ub3):    159(ptr) Variable Workgroup
     172(gs_uc3):    159(ptr) Variable Workgroup
             193:    6(float) Constant 1077936128
             194:   36(fvec3) ConstantComposite 149 150 193
             198:             TypeVector 61(bool) 4
             199:   48(fvec4) ConstantComposite 62 62 62 62
             202:             TypePointer Workgroup 50(ivec4)
     203(gs_ua4):    202(ptr) Variable Workgroup
     204(gs_ub4):    202(ptr) Variable Workgroup
     215(gs_uc4):    202(ptr) Variable Workgroup
             236:    6(float) Constant 1082130432
             237:   48(fvec4) ConstantComposite 149 150 193 236
             241:             TypePointer Input 48(fvec4)
       242(inF0):    241(ptr) Variable Input
       245(inF1):    241(ptr) Variable Input
       248(inF2):    241(ptr) Variable Input
             251:             TypePointer Input 50(ivec4)
       252(inU0):    251(ptr) Variable Input
       255(inU1):    251(ptr) Variable Input
             257:             TypePointer Output 48(fvec4)
258(@entryPointOutput):    257(ptr) Variable Output
4(ComputeShaderFunction):           2 Function None 3
               5:             Label
       240(inF0):     49(ptr) Variable Function
       244(inF1):     49(ptr) Variable Function
       247(inF2):     49(ptr) Variable Function
       250(inU0):     51(ptr) Variable Function
       254(inU1):     51(ptr) Variable Function
      259(param):     49(ptr) Variable Function
      261(param):     49(ptr) Variable Function
      263(param):     49(ptr) Variable Function
      265(param):     51(ptr) Variable Function
      267(param):     51(ptr) Variable Function
             243:   48(fvec4) Load 242(inF0)
                              Store 240(inF0) 243
             246:   48(fvec4) Load 245(inF1)
                              Store 244(inF1) 246
             249:   48(fvec4) Load 248(inF2)
                              Store 247(inF2) 249
             253:   50(ivec4) Load 252(inU0)
                              Store 250(inU0) 253
             256:   50(ivec4) Load 255(inU1)
                              Store 254(inU1) 256
             260:   48(fvec4) Load 240(inF0)
                              Store 259(param) 260
             262:   48(fvec4) Load 244(inF1)
                              Store 261(param) 262
             264:   48(fvec4) Load 247(inF2)
                              Store 263(param) 264
             266:   50(ivec4) Load 250(inU0)
                              Store 265(param) 266
             268:   50(ivec4) Load 254(inU1)
                              Store 267(param) 268
             269:   48(fvec4) FunctionCall 58(@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;) 259(param) 261(param) 263(param) 265(param) 267(param)
                              Store 258(@entryPointOutput) 269
                              Return
                              FunctionEnd
16(ComputeShaderFunctionS(f1;f1;f1;u1;u1;):    6(float) Function None 10
        11(inF0):      7(ptr) FunctionParameter
        12(inF1):      7(ptr) FunctionParameter
        13(inF2):      7(ptr) FunctionParameter
        14(inU0):      9(ptr) FunctionParameter
        15(inU1):      9(ptr) FunctionParameter
              17:             Label
      72(out_u1):      9(ptr) Variable Function
              60:    6(float) Load 11(inF0)
              63:    61(bool) FUnordNotEqual 60 62
              64:    61(bool) All 63
              68:      8(int) Load 67(gs_ub)
              71:      8(int) AtomicIAdd 66(gs_ua) 69 70 68
              73:      8(int) Load 67(gs_ub)
              74:      8(int) AtomicIAdd 66(gs_ua) 69 70 73
                              Store 72(out_u1) 74
              75:      8(int) Load 67(gs_ub)
              76:      8(int) AtomicAnd 66(gs_ua) 69 70 75
              77:      8(int) Load 67(gs_ub)
              78:      8(int) AtomicAnd 66(gs_ua) 69 70 77
                              Store 72(out_u1) 78
              79:      8(int) Load 67(gs_ub)
              81:      8(int) Load 80(gs_uc)
              82:      8(int) AtomicCompareExchange 66(gs_ua) 69 70 70 81 79
                              Store 72(out_u1) 82
              83:      8(int) Load 67(gs_ub)
              84:      8(int) AtomicExchange 66(gs_ua) 69 70 83
                              Store 72(out_u1) 84
              85:      8(int) Load 67(gs_ub)
              86:      8(int) AtomicUMax 66(gs_ua) 69 70 85
              87:      8(int) Load 67(gs_ub)
              88:      8(int) AtomicUMax 66(gs_ua) 69 70 87
                              Store 72(out_u1) 88
              89:      8(int) Load 67(gs_ub)
              90:      8(int) AtomicUMin 66(gs_ua) 69 70 89
              91:      8(int) Load 67(gs_ub)
              92:      8(int) AtomicUMin 66(gs_ua) 69 70 91
                              Store 72(out_u1) 92
              93:      8(int) Load 67(gs_ub)
              94:      8(int) AtomicOr 66(gs_ua) 69 70 93
              95:      8(int) Load 67(gs_ub)
              96:      8(int) AtomicOr 66(gs_ua) 69 70 95
                              Store 72(out_u1) 96
              97:      8(int) Load 67(gs_ub)
              98:      8(int) AtomicXor 66(gs_ua) 69 70 97
              99:      8(int) Load 67(gs_ub)
             100:      8(int) AtomicXor 66(gs_ua) 69 70 99
                              Store 72(out_u1) 100
             104:    6(float) Load 103(gs_fb)
             105:    6(float) AtomicFAddEXT 102(gs_fa) 69 70 104
                              ReturnValue 62
                              FunctionEnd
22(ComputeShaderFunction1(vf1;vf1;vf1;):    6(float) Function None 18
        19(inF0):      7(ptr) FunctionParameter
        20(inF1):      7(ptr) FunctionParameter
        21(inF2):      7(ptr) FunctionParameter
              23:             Label
                              ReturnValue 62
                              FunctionEnd
34(ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2;):   24(fvec2) Function None 28
        29(inF0):     25(ptr) FunctionParameter
        30(inF1):     25(ptr) FunctionParameter
        31(inF2):     25(ptr) FunctionParameter
        32(inU0):     27(ptr) FunctionParameter
        33(inU1):     27(ptr) FunctionParameter
              35:             Label
     120(out_u2):     27(ptr) Variable Function
             110:   24(fvec2) Load 29(inF0)
             113:  111(bvec2) FUnordNotEqual 110 112
             114:    61(bool) All 113
             118:   26(ivec2) Load 117(gs_ub2)
             119:   26(ivec2) AtomicIAdd 116(gs_ua2) 69 70 118
             121:   26(ivec2) Load 117(gs_ub2)
             122:   26(ivec2) AtomicIAdd 116(gs_ua2) 69 70 121
                              Store 120(out_u2) 122
             123:   26(ivec2) Load 117(gs_ub2)
             124:   26(ivec2) AtomicAnd 116(gs_ua2) 69 70 123
             125:   26(ivec2) Load 117(gs_ub2)
             126:   26(ivec2) AtomicAnd 116(gs_ua2) 69 70 125
                              Store 120(out_u2) 126
             127:   26(ivec2) Load 117(gs_ub2)
             129:   26(ivec2) Load 128(gs_uc2)
             130:   26(ivec2) AtomicCompareExchange 116(gs_ua2) 69 70 70 129 127
                              Store 120(out_u2) 130
             131:   26(ivec2) Load 117(gs_ub2)
             132:   26(ivec2) AtomicExchange 116(gs_ua2) 69 70 131
                              Store 120(out_u2) 132
             133:   26(ivec2) Load 117(gs_ub2)
             134:   26(ivec2) AtomicUMax 116(gs_ua2) 69 70 133
             135:   26(ivec2) Load 117(gs_ub2)
             136:   26(ivec2) AtomicUMax 116(gs_ua2) 69 70 135
                              Store 120(out_u2) 136
             137:   26(ivec2) Load 117(gs_ub2)
             138:   26(ivec2) AtomicUMin 116(gs_ua2) 69 70 137
             139:   26(ivec2) Load 117(gs_ub2)
             140:   26(ivec2) AtomicUMin 116(gs_ua2) 69 70 139
                              Store 120(out_u2) 140
             141:   26(ivec2) Load 117(gs_ub2)
             142:   26(ivec2) AtomicOr 116(gs_ua2) 69 70 141
             143:   26(ivec2) Load 117(gs_ub2)
             144:   26(ivec2) AtomicOr 116(gs_ua2) 69 70 143
                              Store 120(out_u2) 144
             145:   26(ivec2) Load 117(gs_ub2)
             146:   26(ivec2) AtomicXor 116(gs_ua2) 69 70 145
             147:   26(ivec2) Load 117(gs_ub2)
             148:   26(ivec2) AtomicXor 116(gs_ua2) 69 70 147
                              Store 120(out_u2) 148
                              ReturnValue 151
                              FunctionEnd
46(ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3;):   36(fvec3) Function None 40
        41(inF0):     37(ptr) FunctionParameter
        42(inF1):     37(ptr) FunctionParameter
        43(inF2):     37(ptr) FunctionParameter
        44(inU0):     39(ptr) FunctionParameter
        45(inU1):     39(ptr) FunctionParameter
              47:             Label
     164(out_u3):     39(ptr) Variable Function
             154:   36(fvec3) Load 41(inF0)
             157:  155(bvec3) FUnordNotEqual 154 156
             158:    61(bool) All 157
             162:   38(ivec3) Load 161(gs_ub3)
             163:   38(ivec3) AtomicIAdd 160(gs_ua3) 69 70 162
             165:   38(ivec3) Load 161(gs_ub3)
             166:   38(ivec3) AtomicIAdd 160(gs_ua3) 69 70 165
                              Store 164(out_u3) 166
             167:   38(ivec3) Load 161(gs_ub3)
             168:   38(ivec3) AtomicAnd 160(gs_ua3) 69 70 167
             169:   38(ivec3) Load 161(gs_ub3)
             170:   38(ivec3) AtomicAnd 160(gs_ua3) 69 70 169
                              Store 164(out_u3) 170
             171:   38(ivec3) Load 161(gs_ub3)
             173:   38(ivec3) Load 172(gs_uc3)
             174:   38(ivec3) AtomicCompareExchange 160(gs_ua3) 69 70 70 173 171
                              Store 164(out_u3) 174
             175:   38(ivec3) Load 161(gs_ub3)
             176:   38(ivec3) AtomicExchange 160(gs_ua3) 69 70 175
                              Store 164(out_u3) 176
             177:   38(ivec3) Load 161(gs_ub3)
             178:   38(ivec3) AtomicUMax 160(gs_ua3) 69 70 177
             179:   38(ivec3) Load 161(gs_ub3)
             180:   38(ivec3) AtomicUMax 160(gs_ua3) 69 70 179
                              Store 164(out_u3) 180
             181:   38(ivec3) Load 161(gs_ub3)
             182:   38(ivec3) AtomicUMin 160(gs_ua3) 69 70 181
             183:   38(ivec3) Load 161(gs_ub3)
             184:   38(ivec3) AtomicUMin 160(gs_ua3) 69 70 183
                              Store 164(out_u3) 184
             185:   38(ivec3) Load 161(gs_ub3)
             186:   38(ivec3) AtomicOr 160(gs_ua3) 69 70 185
             187:   38(ivec3) Load 161(gs_ub3)
             188:   38(ivec3) AtomicOr 160(gs_ua3) 69 70 187
                              Store 164(out_u3) 188
             189:   38(ivec3) Load 161(gs_ub3)
             190:   38(ivec3) AtomicXor 160(gs_ua3) 69 70 189
             191:   38(ivec3) Load 161(gs_ub3)
             192:   38(ivec3) AtomicXor 160(gs_ua3) 69 70 191
                              Store 164(out_u3) 192
                              ReturnValue 194
                              FunctionEnd
58(@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;):   48(fvec4) Function None 52
        53(inF0):     49(ptr) FunctionParameter
        54(inF1):     49(ptr) FunctionParameter
        55(inF2):     49(ptr) FunctionParameter
        56(inU0):     51(ptr) FunctionParameter
        57(inU1):     51(ptr) FunctionParameter
              59:             Label
     207(out_u4):     51(ptr) Variable Function
             197:   48(fvec4) Load 53(inF0)
             200:  198(bvec4) FUnordNotEqual 197 199
             201:    61(bool) All 200
             205:   50(ivec4) Load 204(gs_ub4)
             206:   50(ivec4) AtomicIAdd 203(gs_ua4) 69 70 205
             208:   50(ivec4) Load 204(gs_ub4)
             209:   50(ivec4) AtomicIAdd 203(gs_ua4) 69 70 208
                              Store 207(out_u4) 209
             210:   50(ivec4) Load 204(gs_ub4)
             211:   50(ivec4) AtomicAnd 203(gs_ua4) 69 70 210
             212:   50(ivec4) Load 204(gs_ub4)
             213:   50(ivec4) AtomicAnd 203(gs_ua4) 69 70 212
                              Store 207(out_u4) 213
             214:   50(ivec4) Load 204(gs_ub4)
             216:   50(ivec4) Load 215(gs_uc4)
             217:   50(ivec4) AtomicCompareExchange 203(gs_ua4) 69 70 70 216 214
                              Store 207(out_u4) 217
             218:   50(ivec4) Load 204(gs_ub4)
             219:   50(ivec4) AtomicExchange 203(gs_ua4) 69 70 218
                              Store 207(out_u4) 219
             220:   50(ivec4) Load 204(gs_ub4)
             221:   50(ivec4) AtomicUMax 203(gs_ua4) 69 70 220
             222:   50(ivec4) Load 204(gs_ub4)
             223:   50(ivec4) AtomicUMax 203(gs_ua4) 69 70 222
                              Store 207(out_u4) 223
             224:   50(ivec4) Load 204(gs_ub4)
             225:   50(ivec4) AtomicUMin 203(gs_ua4) 69 70 224
             226:   50(ivec4) Load 204(gs_ub4)
             227:   50(ivec4) AtomicUMin 203(gs_ua4) 69 70 226
                              Store 207(out_u4) 227
             228:   50(ivec4) Load 204(gs_ub4)
             229:   50(ivec4) AtomicOr 203(gs_ua4) 69 70 228
             230:   50(ivec4) Load 204(gs_ub4)
             231:   50(ivec4) AtomicOr 203(gs_ua4) 69 70 230
                              Store 207(out_u4) 231
             232:   50(ivec4) Load 204(gs_ub4)
             233:   50(ivec4) AtomicXor 203(gs_ua4) 69 70 232
             234:   50(ivec4) Load 204(gs_ub4)
             235:   50(ivec4) AtomicXor 203(gs_ua4) 69 70 234
                              Store 207(out_u4) 235
                              ReturnValue 237
                              FunctionEnd
