spv.boolInBlock.frag
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.


Linked fragment stage:


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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 75
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              Name 4  "main"
                              Name 14  "foo(vb4;vb2;"
                              Name 12  "paramb4"
                              Name 13  "paramb2"
                              Name 17  "b1"
                              Name 24  "Buffer"
                              MemberName 24(Buffer) 0  "b2"
                              Name 26  ""
                              Name 39  "Uniform"
                              MemberName 39(Uniform) 0  "b4"
                              Name 41  ""
                              Name 62  "param"
                              Name 67  "param"
                              Name 75  "fragColor"
                              MemberDecorate 24(Buffer) 0 Offset 0
                              Decorate 24(Buffer) BufferBlock
                              Decorate 26 DescriptorSet 0
                              Decorate 26 Binding 1
                              MemberDecorate 39(Uniform) 0 Offset 0
                              Decorate 39(Uniform) Block
                              Decorate 41 DescriptorSet 0
                              Decorate 41 Binding 0
                              Decorate 75(fragColor) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeBool
               7:             TypeVector 6(bool) 4
               8:             TypePointer Function 7(bvec4)
               9:             TypeVector 6(bool) 2
              10:             TypePointer Function 9(bvec2)
              11:             TypeFunction 2 8(ptr) 10(ptr)
              16:             TypePointer Function 6(bool)
              22:             TypeInt 32 0
              23:             TypeVector 22(int) 2
      24(Buffer):             TypeStruct 23(ivec2)
              25:             TypePointer Uniform 24(Buffer)
              26:     25(ptr) Variable Uniform
              27:             TypeInt 32 1
              28:     27(int) Constant 0
              29:     6(bool) ConstantFalse
              30:    9(bvec2) ConstantComposite 29 29
              31:     22(int) Constant 0
              32:   23(ivec2) ConstantComposite 31 31
              33:     22(int) Constant 1
              34:   23(ivec2) ConstantComposite 33 33
              36:             TypePointer Uniform 23(ivec2)
              38:             TypeVector 22(int) 4
     39(Uniform):             TypeStruct 38(ivec4)
              40:             TypePointer Uniform 39(Uniform)
              41:     40(ptr) Variable Uniform
              42:             TypePointer Uniform 38(ivec4)
              65:   38(ivec4) ConstantComposite 31 31 31 31
              72:             TypeFloat 32
              73:             TypeVector 72(float) 4
              74:             TypePointer Output 73(fvec4)
   75(fragColor):     74(ptr) Variable Output
              87:   72(float) Constant 0
              88:   72(float) Constant 1065353216
         4(main):           2 Function None 3
               5:             Label
       62(param):      8(ptr) Variable Function
       67(param):     10(ptr) Variable Function
              35:   23(ivec2) Select 30 34 32
              37:     36(ptr) AccessChain 26 28
                              Store 37 35
              43:     42(ptr) AccessChain 41 28
              44:   38(ivec4) Load 43
              45:     22(int) CompositeExtract 44 2
              46:     6(bool) INotEqual 45 31
                              SelectionMerge 48 None
                              BranchConditional 46 47 48
              47:               Label
              49:     42(ptr)   AccessChain 41 28
              50:   38(ivec4)   Load 49
              51:     22(int)   CompositeExtract 50 0
              52:     6(bool)   INotEqual 51 31
              53:    9(bvec2)   CompositeConstruct 52 52
              54:   23(ivec2)   Select 53 34 32
              55:     36(ptr)   AccessChain 26 28
                                Store 55 54
                                Branch 48
              48:             Label
              56:     36(ptr) AccessChain 26 28
              57:   23(ivec2) Load 56
              58:     22(int) CompositeExtract 57 0
              59:     6(bool) INotEqual 58 31
                              SelectionMerge 61 None
                              BranchConditional 59 60 61
              60:               Label
              63:     42(ptr)   AccessChain 41 28
              64:   38(ivec4)   Load 63
              66:    7(bvec4)   INotEqual 64 65
                                Store 62(param) 66
              68:           2   FunctionCall 14(foo(vb4;vb2;) 62(param) 67(param)
              69:    9(bvec2)   Load 67(param)
              70:   23(ivec2)   Select 69 34 32
              71:     36(ptr)   AccessChain 26 28
                                Store 71 70
                                Branch 61
              61:             Label
              76:     42(ptr) AccessChain 41 28
              77:   38(ivec4) Load 76
              78:     22(int) CompositeExtract 77 0
              79:     6(bool) INotEqual 78 31
                              SelectionMerge 81 None
                              BranchConditional 79 80 81
              80:               Label
              82:     42(ptr)   AccessChain 41 28
              83:   38(ivec4)   Load 82
              84:     22(int)   CompositeExtract 83 1
              85:     6(bool)   INotEqual 84 31
                                Branch 81
              81:             Label
              86:     6(bool) Phi 79 61 85 80
              89:   72(float) Select 86 88 87
              90:   73(fvec4) CompositeConstruct 89 89 89 89
                              Store 75(fragColor) 90
              91:     42(ptr) AccessChain 41 28
              92:   38(ivec4) Load 91
              93:     22(int) CompositeExtract 92 0
              94:     6(bool) INotEqual 93 31
              95:     6(bool) LogicalNot 94
                              SelectionMerge 97 None
                              BranchConditional 95 96 97
              96:               Label
              98:     42(ptr)   AccessChain 41 28
              99:   38(ivec4)   Load 98
             100:     22(int)   CompositeExtract 99 1
             101:     6(bool)   INotEqual 100 31
                                Branch 97
              97:             Label
             102:     6(bool) Phi 94 81 101 96
             103:   72(float) Select 102 88 87
             104:   73(fvec4) CompositeConstruct 103 103 103 103
             105:   73(fvec4) Load 75(fragColor)
             106:   73(fvec4) FSub 105 104
                              Store 75(fragColor) 106
                              Return
                              FunctionEnd
14(foo(vb4;vb2;):           2 Function None 11
     12(paramb4):      8(ptr) FunctionParameter
     13(paramb2):     10(ptr) FunctionParameter
              15:             Label
          17(b1):     16(ptr) Variable Function
              18:    7(bvec4) Load 12(paramb4)
              19:     6(bool) CompositeExtract 18 2
                              Store 17(b1) 19
              20:     6(bool) Load 17(b1)
              21:    9(bvec2) CompositeConstruct 20 20
                              Store 13(paramb2) 21
                              Return
                              FunctionEnd
