spv.specConstantComposite.vert
// Module Version 10000
// Generated by (magic number): 80008
// 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(float64_t) 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
