hlsl.logical.binary.vec.frag
Shader version: 500
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 ( uniform 4-component vector of bool)
0:11              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:12              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:12              Constant:
0:12                0 (const uint)
0:12            b4b: direct index for structure ( uniform 4-component vector of bool)
0:12              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:13              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:13              Constant:
0:13                0 (const uint)
0:13            b4b: direct index for structure ( uniform 4-component vector of bool)
0:13              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:15              b1a: direct index for structure ( uniform bool)
0:15                'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:15                Constant:
0:15                  2 (const uint)
0:15            b4b: direct index for structure ( uniform 4-component vector of bool)
0:15              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:16              b1a: direct index for structure ( uniform bool)
0:16                'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:16                Constant:
0:16                  2 (const uint)
0:16            b4b: direct index for structure ( uniform 4-component vector of bool)
0:16              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:18              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:18              Constant:
0:18                0 (const uint)
0:18            Construct bvec4 ( uniform 4-component vector of bool)
0:18              b1b: direct index for structure ( uniform bool)
0:18                'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:19              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:19              Constant:
0:19                0 (const uint)
0:19            Construct bvec4 ( uniform 4-component vector of bool)
0:19              b1b: direct index for structure ( uniform bool)
0:19                'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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:?           '@entryPointOutput.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:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)


Linked fragment stage:


Shader version: 500
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 ( uniform 4-component vector of bool)
0:11              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:12              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:12              Constant:
0:12                0 (const uint)
0:12            b4b: direct index for structure ( uniform 4-component vector of bool)
0:12              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:13              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:13              Constant:
0:13                0 (const uint)
0:13            b4b: direct index for structure ( uniform 4-component vector of bool)
0:13              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:15              b1a: direct index for structure ( uniform bool)
0:15                'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:15                Constant:
0:15                  2 (const uint)
0:15            b4b: direct index for structure ( uniform 4-component vector of bool)
0:15              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:16              b1a: direct index for structure ( uniform bool)
0:16                'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:16                Constant:
0:16                  2 (const uint)
0:16            b4b: direct index for structure ( uniform 4-component vector of bool)
0:16              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:18              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:18              Constant:
0:18                0 (const uint)
0:18            Construct bvec4 ( uniform 4-component vector of bool)
0:18              b1b: direct index for structure ( uniform bool)
0:18                'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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 ( uniform 4-component vector of bool)
0:19              'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:19              Constant:
0:19                0 (const uint)
0:19            Construct bvec4 ( uniform 4-component vector of bool)
0:19              b1b: direct index for structure ( uniform bool)
0:19                'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  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:?           '@entryPointOutput.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:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of bool b4a,  uniform 4-component vector of bool b4b,  uniform bool b1a,  uniform bool b1b})
0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)

// Module Version 10000
// Generated by (magic number): 80005
// Id's are bound by 115

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 112
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              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 77  "r21"
                              Name 87  "psout"
                              Name 112  "@entryPointOutput.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 112(@entryPointOutput.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)
              71:     21(int) Constant 3
              86:             TypePointer Function 8(PS_OUTPUT)
             101:    6(float) Constant 0
             102:    6(float) Constant 1065353216
             103:    7(fvec4) ConstantComposite 101 101 101 101
             104:    7(fvec4) ConstantComposite 102 102 102 102
             106:             TypePointer Function 7(fvec4)
             111:             TypePointer Output 7(fvec4)
112(@entryPointOutput.Color):    111(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
             113:8(PS_OUTPUT) FunctionCall 10(@main()
             114:    7(fvec4) CompositeExtract 113 0
                              Store 112(@entryPointOutput.Color) 114
                              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
         77(r21):     14(ptr) Variable Function
       87(psout):     86(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
              72:     49(ptr) AccessChain 20 71
              73:     16(int) Load 72
              74:    12(bool) INotEqual 73 26
              75:   13(bvec4) CompositeConstruct 74 74 74 74
              76:   13(bvec4) LogicalAnd 70 75
                              Store 67(r20) 76
              78:     23(ptr) AccessChain 20 22
              79:   17(ivec4) Load 78
              80:   13(bvec4) INotEqual 79 27
              81:     49(ptr) AccessChain 20 71
              82:     16(int) Load 81
              83:    12(bool) INotEqual 82 26
              84:   13(bvec4) CompositeConstruct 83 83 83 83
              85:   13(bvec4) LogicalOr 80 84
                              Store 77(r21) 85
              88:   13(bvec4) Load 15(r00)
              89:   13(bvec4) Load 30(r01)
              90:   13(bvec4) LogicalOr 88 89
              91:   13(bvec4) Load 39(r02)
              92:   13(bvec4) LogicalOr 90 91
              93:   13(bvec4) Load 47(r10)
              94:   13(bvec4) LogicalOr 92 93
              95:   13(bvec4) Load 58(r11)
              96:   13(bvec4) LogicalOr 94 95
              97:   13(bvec4) Load 67(r20)
              98:   13(bvec4) LogicalOr 96 97
              99:   13(bvec4) Load 77(r21)
             100:   13(bvec4) LogicalOr 98 99
             105:    7(fvec4) Select 100 104 103
             107:    106(ptr) AccessChain 87(psout) 22
                              Store 107 105
             108:8(PS_OUTPUT) Load 87(psout)
                              ReturnValue 108
                              FunctionEnd
