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


Linked vertex stage:


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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 24
                              Source GLSL 450
                              Name 4  "main"
                              Name 10  "foo(b1;"
                              Name 9  "b"
                              Name 22  "gl_PerVertex"
                              MemberName 22(gl_PerVertex) 0  "gl_Position"
                              MemberName 22(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 22(gl_PerVertex) 2  "gl_ClipDistance"
                              MemberName 22(gl_PerVertex) 3  "gl_CullDistance"
                              Name 24  ""
                              Name 29  "ubname"
                              MemberName 29(ubname) 0  "b"
                              Name 31  "ubinst"
                              Name 32  "param"
                              MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance
                              MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance
                              Decorate 22(gl_PerVertex) Block
                              MemberDecorate 29(ubname) 0 Offset 0
                              Decorate 29(ubname) Block
                              Decorate 31(ubinst) DescriptorSet 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeBool
               7:             TypePointer Function 6(bool)
               8:             TypeFunction 6(bool) 7(ptr)
              13:     6(bool) ConstantFalse
              17:             TypeFloat 32
              18:             TypeVector 17(float) 4
              19:             TypeInt 32 0
              20:     19(int) Constant 1
              21:             TypeArray 17(float) 20
22(gl_PerVertex):             TypeStruct 18(fvec4) 17(float) 21 21
              23:             TypePointer Output 22(gl_PerVertex)
              24:     23(ptr) Variable Output
              25:             TypeInt 32 1
              26:     25(int) Constant 0
              27:             TypePointer Function 18(fvec4)
      29(ubname):             TypeStruct 19(int)
              30:             TypePointer Uniform 29(ubname)
      31(ubinst):     30(ptr) Variable Uniform
              33:             TypePointer Uniform 19(int)
              36:     19(int) Constant 0
              41:   17(float) Constant 0
              42:   18(fvec4) ConstantComposite 41 41 41 41
              44:   17(float) Constant 1065353216
              45:   18(fvec4) ConstantComposite 44 44 44 44
              47:             TypePointer Output 18(fvec4)
         4(main):           2 Function None 3
               5:             Label
              28:     27(ptr) Variable Function
       32(param):      7(ptr) Variable Function
              34:     33(ptr) AccessChain 31(ubinst) 26
              35:     19(int) Load 34
              37:     6(bool) INotEqual 35 36
                              Store 32(param) 37
              38:     6(bool) FunctionCall 10(foo(b1;) 32(param)
                              SelectionMerge 40 None
                              BranchConditional 38 39 43
              39:               Label
                                Store 28 42
                                Branch 40
              43:               Label
                                Store 28 45
                                Branch 40
              40:             Label
              46:   18(fvec4) Load 28
              48:     47(ptr) AccessChain 24 26
                              Store 48 46
                              Return
                              FunctionEnd
     10(foo(b1;):     6(bool) Function None 8
            9(b):      7(ptr) FunctionParameter
              11:             Label
              12:     6(bool) Load 9(b)
              14:     6(bool) LogicalNotEqual 12 13
                              ReturnValue 14
                              FunctionEnd
