This needs some render testing, but is destined to be part of master. This also leads to a variety of other simplifications. - IO are global symbols, so only need one list of linkage nodes (deferred) - no longer need parse-context-wide 'inEntryPoint' state, entry-point is localized - several parts of splitting/flattening are now localized
		
			
				
	
	
		
			426 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			426 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
hlsl.logical.binary.vec.frag
 | 
						|
Shader version: 450
 | 
						|
gl_FragCoord origin is upper left
 | 
						|
0:? Sequence
 | 
						|
0:10  Function Definition: @main( (temp structure{temp 4-component vector of float Color})
 | 
						|
0:10    Function Parameters: 
 | 
						|
0:?     Sequence
 | 
						|
0:11      Sequence
 | 
						|
0:11        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:11          'r00' (temp 4-component vector of bool)
 | 
						|
0:11          Negate conditional (temp 4-component vector of bool)
 | 
						|
0:11            b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:11              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:11              Constant:
 | 
						|
0:11                0 (const uint)
 | 
						|
0:12      Sequence
 | 
						|
0:12        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:12          'r01' (temp 4-component vector of bool)
 | 
						|
0:12          logical-and (temp 4-component vector of bool)
 | 
						|
0:12            b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:12              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:12              Constant:
 | 
						|
0:12                0 (const uint)
 | 
						|
0:12            b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:12              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:12              Constant:
 | 
						|
0:12                1 (const uint)
 | 
						|
0:13      Sequence
 | 
						|
0:13        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:13          'r02' (temp 4-component vector of bool)
 | 
						|
0:13          logical-or (temp 4-component vector of bool)
 | 
						|
0:13            b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:13              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:13              Constant:
 | 
						|
0:13                0 (const uint)
 | 
						|
0:13            b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:13              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:13              Constant:
 | 
						|
0:13                1 (const uint)
 | 
						|
0:15      Sequence
 | 
						|
0:15        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:15          'r10' (temp 4-component vector of bool)
 | 
						|
0:15          logical-and (temp 4-component vector of bool)
 | 
						|
0:15            Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:15              b1a: direct index for structure (layout(offset=32 ) uniform bool)
 | 
						|
0:15                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:15                Constant:
 | 
						|
0:15                  2 (const uint)
 | 
						|
0:15            b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:15              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:15              Constant:
 | 
						|
0:15                1 (const uint)
 | 
						|
0:16      Sequence
 | 
						|
0:16        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:16          'r11' (temp 4-component vector of bool)
 | 
						|
0:16          logical-or (temp 4-component vector of bool)
 | 
						|
0:16            Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:16              b1a: direct index for structure (layout(offset=32 ) uniform bool)
 | 
						|
0:16                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:16                Constant:
 | 
						|
0:16                  2 (const uint)
 | 
						|
0:16            b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:16              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:16              Constant:
 | 
						|
0:16                1 (const uint)
 | 
						|
0:18      Sequence
 | 
						|
0:18        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:18          'r20' (temp 4-component vector of bool)
 | 
						|
0:18          logical-and (temp 4-component vector of bool)
 | 
						|
0:18            b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:18              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:18              Constant:
 | 
						|
0:18                0 (const uint)
 | 
						|
0:18            Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:18              b1b: direct index for structure (layout(offset=36 ) uniform bool)
 | 
						|
0:18                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:18                Constant:
 | 
						|
0:18                  3 (const uint)
 | 
						|
0:19      Sequence
 | 
						|
0:19        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:19          'r21' (temp 4-component vector of bool)
 | 
						|
0:19          logical-or (temp 4-component vector of bool)
 | 
						|
0:19            b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:19              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:19              Constant:
 | 
						|
0:19                0 (const uint)
 | 
						|
0:19            Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:19              b1b: direct index for structure (layout(offset=36 ) uniform bool)
 | 
						|
0:19                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:19                Constant:
 | 
						|
0:19                  3 (const uint)
 | 
						|
0:22      move second child to first child (temp 4-component vector of float)
 | 
						|
0:22        Color: direct index for structure (temp 4-component vector of float)
 | 
						|
0:22          'psout' (temp structure{temp 4-component vector of float Color})
 | 
						|
0:22          Constant:
 | 
						|
0:22            0 (const int)
 | 
						|
0:22        Convert bool to float (temp 4-component vector of float)
 | 
						|
0:22          logical-or (temp 4-component vector of bool)
 | 
						|
0:22            logical-or (temp 4-component vector of bool)
 | 
						|
0:22              logical-or (temp 4-component vector of bool)
 | 
						|
0:22                logical-or (temp 4-component vector of bool)
 | 
						|
0:22                  logical-or (temp 4-component vector of bool)
 | 
						|
0:22                    logical-or (temp 4-component vector of bool)
 | 
						|
0:22                      'r00' (temp 4-component vector of bool)
 | 
						|
0:22                      'r01' (temp 4-component vector of bool)
 | 
						|
0:22                    'r02' (temp 4-component vector of bool)
 | 
						|
0:22                  'r10' (temp 4-component vector of bool)
 | 
						|
0:22                'r11' (temp 4-component vector of bool)
 | 
						|
0:22              'r20' (temp 4-component vector of bool)
 | 
						|
0:22            'r21' (temp 4-component vector of bool)
 | 
						|
0:23      Branch: Return with expression
 | 
						|
0:23        'psout' (temp structure{temp 4-component vector of float Color})
 | 
						|
0:10  Function Definition: main( (temp void)
 | 
						|
0:10    Function Parameters: 
 | 
						|
0:?     Sequence
 | 
						|
0:10      Sequence
 | 
						|
0:10        move second child to first child (temp 4-component vector of float)
 | 
						|
0:?           'Color' (layout(location=0 ) out 4-component vector of float)
 | 
						|
0:10          Color: direct index for structure (temp 4-component vector of float)
 | 
						|
0:10            Function Call: @main( (temp structure{temp 4-component vector of float Color})
 | 
						|
0:10            Constant:
 | 
						|
0:10              0 (const int)
 | 
						|
0:?   Linker Objects
 | 
						|
0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 | 
						|
0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
 | 
						|
 | 
						|
Linked fragment stage:
 | 
						|
 | 
						|
 | 
						|
Shader version: 450
 | 
						|
gl_FragCoord origin is upper left
 | 
						|
0:? Sequence
 | 
						|
0:10  Function Definition: @main( (temp structure{temp 4-component vector of float Color})
 | 
						|
0:10    Function Parameters: 
 | 
						|
0:?     Sequence
 | 
						|
0:11      Sequence
 | 
						|
0:11        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:11          'r00' (temp 4-component vector of bool)
 | 
						|
0:11          Negate conditional (temp 4-component vector of bool)
 | 
						|
0:11            b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:11              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:11              Constant:
 | 
						|
0:11                0 (const uint)
 | 
						|
0:12      Sequence
 | 
						|
0:12        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:12          'r01' (temp 4-component vector of bool)
 | 
						|
0:12          logical-and (temp 4-component vector of bool)
 | 
						|
0:12            b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:12              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:12              Constant:
 | 
						|
0:12                0 (const uint)
 | 
						|
0:12            b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:12              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:12              Constant:
 | 
						|
0:12                1 (const uint)
 | 
						|
0:13      Sequence
 | 
						|
0:13        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:13          'r02' (temp 4-component vector of bool)
 | 
						|
0:13          logical-or (temp 4-component vector of bool)
 | 
						|
0:13            b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:13              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:13              Constant:
 | 
						|
0:13                0 (const uint)
 | 
						|
0:13            b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:13              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:13              Constant:
 | 
						|
0:13                1 (const uint)
 | 
						|
0:15      Sequence
 | 
						|
0:15        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:15          'r10' (temp 4-component vector of bool)
 | 
						|
0:15          logical-and (temp 4-component vector of bool)
 | 
						|
0:15            Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:15              b1a: direct index for structure (layout(offset=32 ) uniform bool)
 | 
						|
0:15                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:15                Constant:
 | 
						|
0:15                  2 (const uint)
 | 
						|
0:15            b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:15              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:15              Constant:
 | 
						|
0:15                1 (const uint)
 | 
						|
0:16      Sequence
 | 
						|
0:16        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:16          'r11' (temp 4-component vector of bool)
 | 
						|
0:16          logical-or (temp 4-component vector of bool)
 | 
						|
0:16            Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:16              b1a: direct index for structure (layout(offset=32 ) uniform bool)
 | 
						|
0:16                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:16                Constant:
 | 
						|
0:16                  2 (const uint)
 | 
						|
0:16            b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
 | 
						|
0:16              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:16              Constant:
 | 
						|
0:16                1 (const uint)
 | 
						|
0:18      Sequence
 | 
						|
0:18        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:18          'r20' (temp 4-component vector of bool)
 | 
						|
0:18          logical-and (temp 4-component vector of bool)
 | 
						|
0:18            b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:18              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:18              Constant:
 | 
						|
0:18                0 (const uint)
 | 
						|
0:18            Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:18              b1b: direct index for structure (layout(offset=36 ) uniform bool)
 | 
						|
0:18                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:18                Constant:
 | 
						|
0:18                  3 (const uint)
 | 
						|
0:19      Sequence
 | 
						|
0:19        move second child to first child (temp 4-component vector of bool)
 | 
						|
0:19          'r21' (temp 4-component vector of bool)
 | 
						|
0:19          logical-or (temp 4-component vector of bool)
 | 
						|
0:19            b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:19              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:19              Constant:
 | 
						|
0:19                0 (const uint)
 | 
						|
0:19            Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool)
 | 
						|
0:19              b1b: direct index for structure (layout(offset=36 ) uniform bool)
 | 
						|
0:19                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
0:19                Constant:
 | 
						|
0:19                  3 (const uint)
 | 
						|
0:22      move second child to first child (temp 4-component vector of float)
 | 
						|
0:22        Color: direct index for structure (temp 4-component vector of float)
 | 
						|
0:22          'psout' (temp structure{temp 4-component vector of float Color})
 | 
						|
0:22          Constant:
 | 
						|
0:22            0 (const int)
 | 
						|
0:22        Convert bool to float (temp 4-component vector of float)
 | 
						|
0:22          logical-or (temp 4-component vector of bool)
 | 
						|
0:22            logical-or (temp 4-component vector of bool)
 | 
						|
0:22              logical-or (temp 4-component vector of bool)
 | 
						|
0:22                logical-or (temp 4-component vector of bool)
 | 
						|
0:22                  logical-or (temp 4-component vector of bool)
 | 
						|
0:22                    logical-or (temp 4-component vector of bool)
 | 
						|
0:22                      'r00' (temp 4-component vector of bool)
 | 
						|
0:22                      'r01' (temp 4-component vector of bool)
 | 
						|
0:22                    'r02' (temp 4-component vector of bool)
 | 
						|
0:22                  'r10' (temp 4-component vector of bool)
 | 
						|
0:22                'r11' (temp 4-component vector of bool)
 | 
						|
0:22              'r20' (temp 4-component vector of bool)
 | 
						|
0:22            'r21' (temp 4-component vector of bool)
 | 
						|
0:23      Branch: Return with expression
 | 
						|
0:23        'psout' (temp structure{temp 4-component vector of float Color})
 | 
						|
0:10  Function Definition: main( (temp void)
 | 
						|
0:10    Function Parameters: 
 | 
						|
0:?     Sequence
 | 
						|
0:10      Sequence
 | 
						|
0:10        move second child to first child (temp 4-component vector of float)
 | 
						|
0:?           'Color' (layout(location=0 ) out 4-component vector of float)
 | 
						|
0:10          Color: direct index for structure (temp 4-component vector of float)
 | 
						|
0:10            Function Call: @main( (temp structure{temp 4-component vector of float Color})
 | 
						|
0:10            Constant:
 | 
						|
0:10              0 (const int)
 | 
						|
0:?   Linker Objects
 | 
						|
0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 | 
						|
0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
 | 
						|
 | 
						|
// Module Version 10000
 | 
						|
// Generated by (magic number): 80001
 | 
						|
// Id's are bound by 120
 | 
						|
 | 
						|
                              Capability Shader
 | 
						|
               1:             ExtInstImport  "GLSL.std.450"
 | 
						|
                              MemoryModel Logical GLSL450
 | 
						|
                              EntryPoint Fragment 4  "main" 117
 | 
						|
                              ExecutionMode 4 OriginUpperLeft
 | 
						|
                              Name 4  "main"
 | 
						|
                              Name 8  "PS_OUTPUT"
 | 
						|
                              MemberName 8(PS_OUTPUT) 0  "Color"
 | 
						|
                              Name 10  "@main("
 | 
						|
                              Name 15  "r00"
 | 
						|
                              Name 18  "$Global"
 | 
						|
                              MemberName 18($Global) 0  "b4a"
 | 
						|
                              MemberName 18($Global) 1  "b4b"
 | 
						|
                              MemberName 18($Global) 2  "b1a"
 | 
						|
                              MemberName 18($Global) 3  "b1b"
 | 
						|
                              Name 20  ""
 | 
						|
                              Name 30  "r01"
 | 
						|
                              Name 39  "r02"
 | 
						|
                              Name 47  "r10"
 | 
						|
                              Name 58  "r11"
 | 
						|
                              Name 67  "r20"
 | 
						|
                              Name 79  "r21"
 | 
						|
                              Name 92  "psout"
 | 
						|
                              Name 117  "Color"
 | 
						|
                              MemberDecorate 18($Global) 0 Offset 0
 | 
						|
                              MemberDecorate 18($Global) 1 Offset 16
 | 
						|
                              MemberDecorate 18($Global) 2 Offset 32
 | 
						|
                              MemberDecorate 18($Global) 3 Offset 36
 | 
						|
                              Decorate 18($Global) Block
 | 
						|
                              Decorate 20 DescriptorSet 0
 | 
						|
                              Decorate 117(Color) Location 0
 | 
						|
               2:             TypeVoid
 | 
						|
               3:             TypeFunction 2
 | 
						|
               6:             TypeFloat 32
 | 
						|
               7:             TypeVector 6(float) 4
 | 
						|
    8(PS_OUTPUT):             TypeStruct 7(fvec4)
 | 
						|
               9:             TypeFunction 8(PS_OUTPUT)
 | 
						|
              12:             TypeBool
 | 
						|
              13:             TypeVector 12(bool) 4
 | 
						|
              14:             TypePointer Function 13(bvec4)
 | 
						|
              16:             TypeInt 32 0
 | 
						|
              17:             TypeVector 16(int) 4
 | 
						|
     18($Global):             TypeStruct 17(ivec4) 17(ivec4) 16(int) 16(int)
 | 
						|
              19:             TypePointer Uniform 18($Global)
 | 
						|
              20:     19(ptr) Variable Uniform
 | 
						|
              21:             TypeInt 32 1
 | 
						|
              22:     21(int) Constant 0
 | 
						|
              23:             TypePointer Uniform 17(ivec4)
 | 
						|
              26:     16(int) Constant 0
 | 
						|
              27:   17(ivec4) ConstantComposite 26 26 26 26
 | 
						|
              34:     21(int) Constant 1
 | 
						|
              48:     21(int) Constant 2
 | 
						|
              49:             TypePointer Uniform 16(int)
 | 
						|
              73:     21(int) Constant 3
 | 
						|
              91:             TypePointer Function 8(PS_OUTPUT)
 | 
						|
             106:    6(float) Constant 0
 | 
						|
             107:    6(float) Constant 1065353216
 | 
						|
             108:    7(fvec4) ConstantComposite 106 106 106 106
 | 
						|
             109:    7(fvec4) ConstantComposite 107 107 107 107
 | 
						|
             111:             TypePointer Function 7(fvec4)
 | 
						|
             116:             TypePointer Output 7(fvec4)
 | 
						|
      117(Color):    116(ptr) Variable Output
 | 
						|
         4(main):           2 Function None 3
 | 
						|
               5:             Label
 | 
						|
             118:8(PS_OUTPUT) FunctionCall 10(@main()
 | 
						|
             119:    7(fvec4) CompositeExtract 118 0
 | 
						|
                              Store 117(Color) 119
 | 
						|
                              Return
 | 
						|
                              FunctionEnd
 | 
						|
      10(@main():8(PS_OUTPUT) Function None 9
 | 
						|
              11:             Label
 | 
						|
         15(r00):     14(ptr) Variable Function
 | 
						|
         30(r01):     14(ptr) Variable Function
 | 
						|
         39(r02):     14(ptr) Variable Function
 | 
						|
         47(r10):     14(ptr) Variable Function
 | 
						|
         58(r11):     14(ptr) Variable Function
 | 
						|
         67(r20):     14(ptr) Variable Function
 | 
						|
         79(r21):     14(ptr) Variable Function
 | 
						|
       92(psout):     91(ptr) Variable Function
 | 
						|
              24:     23(ptr) AccessChain 20 22
 | 
						|
              25:   17(ivec4) Load 24
 | 
						|
              28:   13(bvec4) INotEqual 25 27
 | 
						|
              29:   13(bvec4) LogicalNot 28
 | 
						|
                              Store 15(r00) 29
 | 
						|
              31:     23(ptr) AccessChain 20 22
 | 
						|
              32:   17(ivec4) Load 31
 | 
						|
              33:   13(bvec4) INotEqual 32 27
 | 
						|
              35:     23(ptr) AccessChain 20 34
 | 
						|
              36:   17(ivec4) Load 35
 | 
						|
              37:   13(bvec4) INotEqual 36 27
 | 
						|
              38:   13(bvec4) LogicalAnd 33 37
 | 
						|
                              Store 30(r01) 38
 | 
						|
              40:     23(ptr) AccessChain 20 22
 | 
						|
              41:   17(ivec4) Load 40
 | 
						|
              42:   13(bvec4) INotEqual 41 27
 | 
						|
              43:     23(ptr) AccessChain 20 34
 | 
						|
              44:   17(ivec4) Load 43
 | 
						|
              45:   13(bvec4) INotEqual 44 27
 | 
						|
              46:   13(bvec4) LogicalOr 42 45
 | 
						|
                              Store 39(r02) 46
 | 
						|
              50:     49(ptr) AccessChain 20 48
 | 
						|
              51:     16(int) Load 50
 | 
						|
              52:    12(bool) INotEqual 51 26
 | 
						|
              53:   13(bvec4) CompositeConstruct 52 52 52 52
 | 
						|
              54:     23(ptr) AccessChain 20 34
 | 
						|
              55:   17(ivec4) Load 54
 | 
						|
              56:   13(bvec4) INotEqual 55 27
 | 
						|
              57:   13(bvec4) LogicalAnd 53 56
 | 
						|
                              Store 47(r10) 57
 | 
						|
              59:     49(ptr) AccessChain 20 48
 | 
						|
              60:     16(int) Load 59
 | 
						|
              61:    12(bool) INotEqual 60 26
 | 
						|
              62:   13(bvec4) CompositeConstruct 61 61 61 61
 | 
						|
              63:     23(ptr) AccessChain 20 34
 | 
						|
              64:   17(ivec4) Load 63
 | 
						|
              65:   13(bvec4) INotEqual 64 27
 | 
						|
              66:   13(bvec4) LogicalOr 62 65
 | 
						|
                              Store 58(r11) 66
 | 
						|
              68:     23(ptr) AccessChain 20 22
 | 
						|
              69:   17(ivec4) Load 68
 | 
						|
              70:   13(bvec4) INotEqual 69 27
 | 
						|
                              SelectionMerge 72 None
 | 
						|
                              BranchConditional 70 71 72
 | 
						|
              71:               Label
 | 
						|
              74:     49(ptr)   AccessChain 20 73
 | 
						|
              75:     16(int)   Load 74
 | 
						|
              76:    12(bool)   INotEqual 75 26
 | 
						|
              77:   13(bvec4)   CompositeConstruct 76 76 76 76
 | 
						|
                                Branch 72
 | 
						|
              72:             Label
 | 
						|
              78:    12(bool) Phi 70 11 77 71
 | 
						|
                              Store 67(r20) 78
 | 
						|
              80:     23(ptr) AccessChain 20 22
 | 
						|
              81:   17(ivec4) Load 80
 | 
						|
              82:   13(bvec4) INotEqual 81 27
 | 
						|
              83:    12(bool) LogicalNot 82
 | 
						|
                              SelectionMerge 85 None
 | 
						|
                              BranchConditional 83 84 85
 | 
						|
              84:               Label
 | 
						|
              86:     49(ptr)   AccessChain 20 73
 | 
						|
              87:     16(int)   Load 86
 | 
						|
              88:    12(bool)   INotEqual 87 26
 | 
						|
              89:   13(bvec4)   CompositeConstruct 88 88 88 88
 | 
						|
                                Branch 85
 | 
						|
              85:             Label
 | 
						|
              90:    12(bool) Phi 82 72 89 84
 | 
						|
                              Store 79(r21) 90
 | 
						|
              93:   13(bvec4) Load 15(r00)
 | 
						|
              94:   13(bvec4) Load 30(r01)
 | 
						|
              95:   13(bvec4) LogicalOr 93 94
 | 
						|
              96:   13(bvec4) Load 39(r02)
 | 
						|
              97:   13(bvec4) LogicalOr 95 96
 | 
						|
              98:   13(bvec4) Load 47(r10)
 | 
						|
              99:   13(bvec4) LogicalOr 97 98
 | 
						|
             100:   13(bvec4) Load 58(r11)
 | 
						|
             101:   13(bvec4) LogicalOr 99 100
 | 
						|
             102:   13(bvec4) Load 67(r20)
 | 
						|
             103:   13(bvec4) LogicalOr 101 102
 | 
						|
             104:   13(bvec4) Load 79(r21)
 | 
						|
             105:   13(bvec4) LogicalOr 103 104
 | 
						|
             110:    7(fvec4) Select 105 109 108
 | 
						|
             112:    111(ptr) AccessChain 92(psout) 22
 | 
						|
                              Store 112 110
 | 
						|
             113:8(PS_OUTPUT) Load 92(psout)
 | 
						|
                              ReturnValue 113
 | 
						|
                              FunctionEnd
 |