spv.functionSemantics.frag
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 156

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 76 152
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 400
                              Name 4  "main"
                              Name 15  "foo(i1;i1;i1;i1;i1;i1;"
                              Name 9  "a"
                              Name 10  "b"
                              Name 11  "c"
                              Name 12  "d"
                              Name 13  "e"
                              Name 14  "f"
                              Name 25  "foo2(f1;vf3;i1;"
                              Name 22  "a"
                              Name 23  "b"
                              Name 24  "r"
                              Name 28  "foo3("
                              Name 30  "sum"
                              Name 76  "u"
                              Name 89  "t"
                              Name 92  "s"
                              MemberName 92(s) 0  "t"
                              Name 94  "f"
                              Name 98  "color"
                              Name 104  "e"
                              Name 105  "param"
                              Name 106  "param"
                              Name 107  "param"
                              Name 108  "param"
                              Name 123  "ret"
                              Name 125  "tempReturn"
                              Name 130  "tempArg"
                              Name 131  "param"
                              Name 132  "param"
                              Name 133  "param"
                              Name 136  "arg"
                              Name 152  "gl_FragColor"
                              Decorate 76(u) Location 0
                              Decorate 152(gl_FragColor) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypePointer Function 6(int)
               8:             TypeFunction 6(int) 7(ptr) 6(int) 7(ptr) 6(int) 7(ptr) 7(ptr)
              17:             TypeFloat 32
              18:             TypePointer Function 17(float)
              19:             TypeVector 17(float) 3
              20:             TypePointer Function 19(fvec3)
              21:             TypeFunction 6(int) 18(ptr) 20(ptr) 7(ptr)
              27:             TypeFunction 6(int)
              38:      6(int) Constant 64
              43:      6(int) Constant 1024
              62:   17(float) Constant 1077936128
              66:   17(float) Constant 1084227584
              67:             TypeInt 32 0
              68:     67(int) Constant 1
              75:             TypePointer Input 17(float)
           76(u):     75(ptr) Variable Input
              78:   17(float) Constant 1078774989
              79:             TypeBool
              84:      6(int) Constant 1000000
              86:      6(int) Constant 2000000
              90:      6(int) Constant 2
              91:             TypeVector 6(int) 4
           92(s):             TypeStruct 91(ivec4)
              93:             TypePointer Function 92(s)
              95:      6(int) Constant 0
              96:      6(int) Constant 32
              99:      6(int) Constant 1
             103:      6(int) Constant 8
             115:      6(int) Constant 128
             124:             TypePointer Private 6(int)
 125(tempReturn):    124(ptr) Variable Private
             126:   17(float) Constant 1082130432
             127:   17(float) Constant 1065353216
             128:   17(float) Constant 1073741824
             129:   19(fvec3) ConstantComposite 127 128 62
             150:             TypeVector 17(float) 4
             151:             TypePointer Output 150(fvec4)
152(gl_FragColor):    151(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
           89(t):      7(ptr) Variable Function
           94(f):     93(ptr) Variable Function
       98(color):      7(ptr) Variable Function
          104(e):      7(ptr) Variable Function
      105(param):      7(ptr) Variable Function
      106(param):      7(ptr) Variable Function
      107(param):      7(ptr) Variable Function
      108(param):      7(ptr) Variable Function
        123(ret):     18(ptr) Variable Function
    130(tempArg):      7(ptr) Variable Function
      131(param):     18(ptr) Variable Function
      132(param):     20(ptr) Variable Function
      133(param):      7(ptr) Variable Function
        136(arg):     18(ptr) Variable Function
                              Store 89(t) 90
              97:      7(ptr) AccessChain 94(f) 95 68
                              Store 97 96
             100:      6(int) Load 89(t)
             101:      6(int) Load 89(t)
             102:      6(int) IAdd 100 101
                              Store 105(param) 99
                              Store 106(param) 102
             109:      7(ptr) AccessChain 94(f) 95 68
             110:      6(int) Load 109
                              Store 108(param) 110
             111:      6(int) FunctionCall 15(foo(i1;i1;i1;i1;i1;i1;) 105(param) 90 106(param) 103 107(param) 108(param)
             112:      6(int) Load 107(param)
                              Store 104(e) 112
             113:      6(int) Load 108(param)
             114:      7(ptr) AccessChain 94(f) 95 68
                              Store 114 113
                              Store 98(color) 111
             116:      6(int) Load 104(e)
             117:      7(ptr) AccessChain 94(f) 95 68
             118:      6(int) Load 117
             119:      6(int) IAdd 116 118
             120:      6(int) IMul 115 119
             121:      6(int) Load 98(color)
             122:      6(int) IAdd 121 120
                              Store 98(color) 122
                              Store 131(param) 126
                              Store 132(param) 129
             134:      6(int) FunctionCall 25(foo2(f1;vf3;i1;) 131(param) 132(param) 133(param)
             135:      6(int) Load 133(param)
                              Store 130(tempArg) 135
                              Store 125(tempReturn) 134
             137:      6(int) Load 130(tempArg)
             138:   17(float) ConvertSToF 137
                              Store 136(arg) 138
             139:      6(int) Load 125(tempReturn)
             140:   17(float) ConvertSToF 139
                              Store 123(ret) 140
             141:   17(float) Load 123(ret)
             142:   17(float) Load 136(arg)
             143:   17(float) FAdd 141 142
             144:      6(int) ConvertFToS 143
             145:      6(int) Load 98(color)
             146:      6(int) IAdd 145 144
                              Store 98(color) 146
             147:      6(int) FunctionCall 28(foo3()
             148:      6(int) Load 98(color)
             149:      6(int) IAdd 148 147
                              Store 98(color) 149
             153:      6(int) Load 98(color)
             154:   17(float) ConvertSToF 153
             155:  150(fvec4) CompositeConstruct 154 154 154 154
                              Store 152(gl_FragColor) 155
                              Return
                              FunctionEnd
15(foo(i1;i1;i1;i1;i1;i1;):      6(int) Function None 8
            9(a):      7(ptr) FunctionParameter
           10(b):      6(int) FunctionParameter
           11(c):      7(ptr) FunctionParameter
           12(d):      6(int) FunctionParameter
           13(e):      7(ptr) FunctionParameter
           14(f):      7(ptr) FunctionParameter
              16:             Label
         30(sum):      7(ptr) Variable Function
              31:      6(int) Load 9(a)
              32:      6(int) IAdd 31 10(b)
              33:      6(int) Load 11(c)
              34:      6(int) IAdd 32 33
              35:      6(int) IAdd 34 12(d)
              36:      6(int) Load 14(f)
              37:      6(int) IAdd 35 36
                              Store 30(sum) 37
              39:      6(int) Load 9(a)
              40:      6(int) IMul 39 38
                              Store 9(a) 40
              41:      6(int) Load 11(c)
              42:      6(int) IMul 41 38
                              Store 11(c) 42
                              Store 13(e) 43
              44:      6(int) Load 14(f)
              45:      6(int) IMul 44 38
                              Store 14(f) 45
              46:      6(int) Load 9(a)
              47:      6(int) IMul 38 10(b)
              48:      6(int) IAdd 46 47
              49:      6(int) Load 11(c)
              50:      6(int) IAdd 48 49
              51:      6(int) IMul 38 12(d)
              52:      6(int) IAdd 50 51
              53:      6(int) Load 13(e)
              54:      6(int) IAdd 52 53
              55:      6(int) Load 14(f)
              56:      6(int) IAdd 54 55
              57:      6(int) Load 30(sum)
              58:      6(int) IAdd 57 56
                              Store 30(sum) 58
              59:      6(int) Load 30(sum)
                              ReturnValue 59
                              FunctionEnd
25(foo2(f1;vf3;i1;):      6(int) Function None 21
           22(a):     18(ptr) FunctionParameter
           23(b):     20(ptr) FunctionParameter
           24(r):      7(ptr) FunctionParameter
              26:             Label
              63:   17(float) Load 22(a)
              64:   17(float) FMul 62 63
              65:      6(int) ConvertFToS 64
                              Store 24(r) 65
              69:     18(ptr) AccessChain 23(b) 68
              70:   17(float) Load 69
              71:   17(float) FMul 66 70
              72:      6(int) ConvertFToS 71
                              ReturnValue 72
                              FunctionEnd
       28(foo3():      6(int) Function None 27
              29:             Label
              77:   17(float) Load 76(u)
              80:    79(bool) FOrdGreaterThan 77 78
                              SelectionMerge 82 None
                              BranchConditional 80 81 82
              81:               Label
                                Kill
              82:             Label
                              ReturnValue 86
                              FunctionEnd
