spv.specConstantComposite.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 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 27  "color"
                              Name 33  "len"
                              Name 42  "global_vec4_array_with_spec_length"
                              Decorate 21 SpecId 203
                              Decorate 28 SpecId 200
                              Decorate 37 SpecId 201
                              Decorate 39 SpecId 202
               2:             TypeVoid
               3:             TypeFunction 2
              14:             TypeInt 32 1
              15:             TypeFunction 14(int)
              20:             TypeBool
              21:    20(bool) SpecConstantTrue
              24:             TypeFloat 32
              25:             TypeVector 24(float) 4
              26:             TypePointer Output 25(fvec4)
       27(color):     26(ptr) Variable Output
              28:     14(int) SpecConstant 3
              32:             TypePointer Function 14(int)
              37:   24(float) SpecConstant 1078523331
              38:             TypeFloat 64
              39:   38(float) SpecConstant 1413754136 1074340347
              40:             TypeArray 25(fvec4) 28
              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 22 23
              22:               Label
              29:   24(float)   ConvertSToF 28
              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
              34:     14(int) Load 33(len)
                              ReturnValue 34
                              FunctionEnd
18(declare_spec_const_in_func():           2 Function None 3
              19:             Label
                              Return
                              FunctionEnd
