spv.pushConstant.vert
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 35

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 24
                              Source GLSL 400
                              Name 4  "main"
                              Name 11  "Material"
                              MemberName 11(Material) 0  "kind"
                              MemberName 11(Material) 1  "fa"
                              Name 13  "matInst"
                              Name 24  "color"
                              Decorate 10 ArrayStride 4
                              MemberDecorate 11(Material) 0 Offset 0
                              MemberDecorate 11(Material) 1 Offset 4
                              Decorate 11(Material) Block
                              Decorate 24(color) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypeFloat 32
               8:             TypeInt 32 0
               9:      8(int) Constant 3
              10:             TypeArray 7(float) 9
    11(Material):             TypeStruct 6(int) 10
              12:             TypePointer PushConstant 11(Material)
     13(matInst):     12(ptr) Variable PushConstant
              14:      6(int) Constant 0
              15:             TypePointer PushConstant 6(int)
              22:             TypeVector 7(float) 4
              23:             TypePointer Output 22(fvec4)
       24(color):     23(ptr) Variable Output
              25:    7(float) Constant 1045220557
              26:   22(fvec4) ConstantComposite 25 25 25 25
              28:    7(float) Constant 1056964608
              29:   22(fvec4) ConstantComposite 28 28 28 28
              31:    7(float) Constant 0
              32:   22(fvec4) ConstantComposite 31 31 31 31
         4(main):           2 Function None 3
               5:             Label
              16:     15(ptr) AccessChain 13(matInst) 14
              17:      6(int) Load 16
                              SelectionMerge 21 None
                              Switch 17 20 
                                     case 1: 18
                                     case 2: 19
              20:               Label
                                Store 24(color) 32
                                Branch 21
              18:               Label
                                Store 24(color) 26
                                Branch 21
              19:               Label
                                Store 24(color) 29
                                Branch 21
              21:             Label
                              Return
                              FunctionEnd
