spv.specConstantComposite.vert
// Module Version 10000
// Generated by (magic number): 80005
// Id's are bound by 43

                              Capability Shader
                              Capability Float64
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 27 42
                              Source GLSL 450
                              Name 4  "main"
                              Name 6  "refer_primary_spec_const("
                              Name 8  "refer_composite_spec_const("
                              Name 10  "refer_copmosite_dot_dereference("
                              Name 12  "refer_composite_bracket_dereference("
                              Name 16  "refer_spec_const_array_length("
                              Name 18  "declare_spec_const_in_func("
                              Name 21  "spec_bool"
                              Name 27  "color"
                              Name 28  "spec_int"
                              Name 33  "len"
                              Name 37  "spec_float"
                              Name 39  "spec_double"
                              Name 42  "global_vec4_array_with_spec_length"
                              Decorate 21(spec_bool) SpecId 203
                              Decorate 28(spec_int) SpecId 200
                              Decorate 37(spec_float) SpecId 201
                              Decorate 39(spec_double) SpecId 202
               2:             TypeVoid
               3:             TypeFunction 2
              14:             TypeInt 32 1
              15:             TypeFunction 14(int)
              20:             TypeBool
   21(spec_bool):    20(bool) SpecConstantTrue
              24:             TypeFloat 32
              25:             TypeVector 24(float) 4
              26:             TypePointer Output 25(fvec4)
       27(color):     26(ptr) Variable Output
    28(spec_int):     14(int) SpecConstant 3
              32:             TypePointer Function 14(int)
  37(spec_float):   24(float) SpecConstant 1078523331
              38:             TypeFloat 64
 39(spec_double):   38(float) SpecConstant 1413754136 1074340347
              40:             TypeArray 25(fvec4) 28(spec_int)
              41:             TypePointer Input 40
42(global_vec4_array_with_spec_length):     41(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
                              Return
                              FunctionEnd
6(refer_primary_spec_const():           2 Function None 3
               7:             Label
                              SelectionMerge 23 None
                              BranchConditional 21(spec_bool) 22 23
              22:               Label
              29:   24(float)   ConvertSToF 28(spec_int)
              30:   25(fvec4)   Load 27(color)
              31:   25(fvec4)   VectorTimesScalar 30 29
                                Store 27(color) 31
                                Branch 23
              23:             Label
                              Return
                              FunctionEnd
8(refer_composite_spec_const():           2 Function None 3
               9:             Label
                              Return
                              FunctionEnd
10(refer_copmosite_dot_dereference():           2 Function None 3
              11:             Label
                              Return
                              FunctionEnd
12(refer_composite_bracket_dereference():           2 Function None 3
              13:             Label
                              Return
                              FunctionEnd
16(refer_spec_const_array_length():     14(int) Function None 15
              17:             Label
         33(len):     32(ptr) Variable Function
                              Store 33(len) 28(spec_int)
              34:     14(int) Load 33(len)
                              ReturnValue 34
                              FunctionEnd
18(declare_spec_const_in_func():           2 Function None 3
              19:             Label
                              Return
                              FunctionEnd
