spv.constConstruct.vert
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 150

                              Capability Shader
                              Capability Float16
                              Capability Float64
                              Capability Int64
                              Capability Int16
                              Capability Int8
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main"
                              Source GLSL 450
                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types_float16"
                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types_float32"
                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types_float64"
                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types_int16"
                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types_int32"
                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types_int64"
                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types_int8"
                              Name 4  "main"
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 16
               7:6(float16_t) Constant 15360
               8:6(float16_t) Constant 16384
               9:6(float16_t) Constant 16896
              10:6(float16_t) Constant 17408
              11:6(float16_t) Constant 17664
              12:6(float16_t) Constant 17920
              13:6(float16_t) Constant 18176
              14:6(float16_t) Constant 18432
              15:6(float16_t) Constant 18560
              16:6(float16_t) Constant 18688
              17:6(float16_t) Constant 18816
              18:             TypeFloat 32
              19:   18(float) Constant 1099431936
              20:   18(float) Constant 1099956224
              21:   18(float) Constant 1100480512
              22:   18(float) Constant 1101004800
              23:   18(float) Constant 1101529088
              24:   18(float) Constant 1102053376
              25:   18(float) Constant 1102577664
              26:   18(float) Constant 1103101952
              27:   18(float) Constant 1103626240
              28:   18(float) Constant 1104150528
              29:   18(float) Constant 1104674816
              30:   18(float) Constant 1065353216
              31:             TypeFloat 64
              32:31(float64_t) Constant 0 1077968896
              33:31(float64_t) Constant 0 1078001664
              34:31(float64_t) Constant 0 1078034432
              35:31(float64_t) Constant 0 1078067200
              36:31(float64_t) Constant 0 1078099968
              37:31(float64_t) Constant 0 1078132736
              38:31(float64_t) Constant 0 1078165504
              39:31(float64_t) Constant 0 1078198272
              40:31(float64_t) Constant 0 1078231040
              41:31(float64_t) Constant 0 1078263808
              42:31(float64_t) Constant 0 1078296576
              43:31(float64_t) Constant 0 1072693248
              44:             TypeInt 8 1
              45:  44(int8_t) Constant 49
              46:  44(int8_t) Constant 50
              47:  44(int8_t) Constant 51
              48:  44(int8_t) Constant 52
              49:  44(int8_t) Constant 53
              50:  44(int8_t) Constant 54
              51:  44(int8_t) Constant 55
              52:  44(int8_t) Constant 56
              53:  44(int8_t) Constant 57
              54:  44(int8_t) Constant 58
              55:  44(int8_t) Constant 59
              56:  44(int8_t) Constant 1
              57:             TypeInt 16 1
              58: 57(int16_t) Constant 65
              59: 57(int16_t) Constant 66
              60: 57(int16_t) Constant 67
              61: 57(int16_t) Constant 68
              62: 57(int16_t) Constant 69
              63: 57(int16_t) Constant 70
              64: 57(int16_t) Constant 71
              65: 57(int16_t) Constant 72
              66: 57(int16_t) Constant 73
              67: 57(int16_t) Constant 74
              68: 57(int16_t) Constant 75
              69: 57(int16_t) Constant 1
              70:             TypeInt 32 1
              71:     70(int) Constant 81
              72:     70(int) Constant 82
              73:     70(int) Constant 83
              74:     70(int) Constant 84
              75:     70(int) Constant 85
              76:     70(int) Constant 86
              77:     70(int) Constant 87
              78:     70(int) Constant 88
              79:     70(int) Constant 89
              80:     70(int) Constant 90
              81:     70(int) Constant 91
              82:     70(int) Constant 1
              83:             TypeInt 64 1
              84: 83(int64_t) Constant 97 0
              85: 83(int64_t) Constant 98 0
              86: 83(int64_t) Constant 99 0
              87: 83(int64_t) Constant 100 0
              88: 83(int64_t) Constant 101 0
              89: 83(int64_t) Constant 102 0
              90: 83(int64_t) Constant 103 0
              91: 83(int64_t) Constant 104 0
              92: 83(int64_t) Constant 105 0
              93: 83(int64_t) Constant 106 0
              94: 83(int64_t) Constant 107 0
              95: 83(int64_t) Constant 1 0
              96:             TypeInt 8 0
              97:  96(int8_t) Constant 113
              98:  96(int8_t) Constant 114
              99:  96(int8_t) Constant 115
             100:  96(int8_t) Constant 116
             101:  96(int8_t) Constant 117
             102:  96(int8_t) Constant 118
             103:  96(int8_t) Constant 119
             104:  96(int8_t) Constant 120
             105:  96(int8_t) Constant 121
             106:  96(int8_t) Constant 122
             107:  96(int8_t) Constant 123
             108:  96(int8_t) Constant 1
             109:             TypeInt 16 0
             110:109(int16_t) Constant 129
             111:109(int16_t) Constant 130
             112:109(int16_t) Constant 131
             113:109(int16_t) Constant 65412
             114:109(int16_t) Constant 133
             115:109(int16_t) Constant 134
             116:109(int16_t) Constant 135
             117:109(int16_t) Constant 136
             118:109(int16_t) Constant 137
             119:109(int16_t) Constant 138
             120:109(int16_t) Constant 139
             121:109(int16_t) Constant 1
             122:             TypeInt 32 0
             123:    122(int) Constant 145
             124:    122(int) Constant 146
             125:    122(int) Constant 147
             126:    122(int) Constant 4294967188
             127:    122(int) Constant 149
             128:    122(int) Constant 150
             129:    122(int) Constant 151
             130:    122(int) Constant 152
             131:    122(int) Constant 153
             132:    122(int) Constant 154
             133:    122(int) Constant 155
             134:    122(int) Constant 1
             135:             TypeInt 64 0
             136:135(int64_t) Constant 161 0
             137:135(int64_t) Constant 162 0
             138:135(int64_t) Constant 163 0
             139:135(int64_t) Constant 4294967204 4294967295
             140:135(int64_t) Constant 165 0
             141:135(int64_t) Constant 166 0
             142:135(int64_t) Constant 167 0
             143:135(int64_t) Constant 168 0
             144:135(int64_t) Constant 169 0
             145:135(int64_t) Constant 170 0
             146:135(int64_t) Constant 171 0
             147:135(int64_t) Constant 1 0
             148:             TypeBool
             149:   148(bool) ConstantTrue
         4(main):           2 Function None 3
               5:             Label
                              Return
                              FunctionEnd
