spv.functionSemantics.frag
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.


Linked fragment stage:


// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 153

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginLowerLeft
                              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 74  "u"
                              Name 86  "t"
                              Name 89  "s"
                              MemberName 89(s) 0  "t"
                              Name 91  "f"
                              Name 95  "color"
                              Name 101  "e"
                              Name 102  "param"
                              Name 103  "param"
                              Name 104  "param"
                              Name 105  "param"
                              Name 120  "ret"
                              Name 122  "tempReturn"
                              Name 127  "tempArg"
                              Name 128  "param"
                              Name 129  "param"
                              Name 130  "param"
                              Name 133  "arg"
                              Name 149  "gl_FragColor"
               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
              61:   17(float) Constant 1077936128
              65:   17(float) Constant 1084227584
              66:             TypeInt 32 0
              67:     66(int) Constant 1
              73:             TypePointer UniformConstant 17(float)
           74(u):     73(ptr) Variable UniformConstant
              76:   17(float) Constant 1078774989
              77:             TypeBool
              82:      6(int) Constant 1000000
              84:      6(int) Constant 2000000
              87:      6(int) Constant 2
              88:             TypeVector 6(int) 4
           89(s):             TypeStruct 88(ivec4)
              90:             TypePointer Function 89(s)
              92:      6(int) Constant 0
              93:      6(int) Constant 32
              96:      6(int) Constant 1
             100:      6(int) Constant 8
             112:      6(int) Constant 128
             121:             TypePointer Private 6(int)
 122(tempReturn):    121(ptr) Variable Private
             123:   17(float) Constant 1082130432
             124:   17(float) Constant 1065353216
             125:   17(float) Constant 1073741824
             126:   19(fvec3) ConstantComposite 124 125 61
             147:             TypeVector 17(float) 4
             148:             TypePointer Output 147(fvec4)
149(gl_FragColor):    148(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
           86(t):      7(ptr) Variable Function
           91(f):     90(ptr) Variable Function
       95(color):      7(ptr) Variable Function
          101(e):      7(ptr) Variable Function
      102(param):      7(ptr) Variable Function
      103(param):      7(ptr) Variable Function
      104(param):      7(ptr) Variable Function
      105(param):      7(ptr) Variable Function
        120(ret):     18(ptr) Variable Function
    127(tempArg):      7(ptr) Variable Function
      128(param):     18(ptr) Variable Function
      129(param):     20(ptr) Variable Function
      130(param):      7(ptr) Variable Function
        133(arg):     18(ptr) Variable Function
                              Store 86(t) 87
              94:      7(ptr) AccessChain 91(f) 92 67
                              Store 94 93
              97:      6(int) Load 86(t)
              98:      6(int) Load 86(t)
              99:      6(int) IAdd 97 98
                              Store 102(param) 96
                              Store 103(param) 99
             106:      7(ptr) AccessChain 91(f) 92 67
             107:      6(int) Load 106
                              Store 105(param) 107
             108:      6(int) FunctionCall 15(foo(i1;i1;i1;i1;i1;i1;) 102(param) 87 103(param) 100 104(param) 105(param)
             109:      6(int) Load 104(param)
                              Store 101(e) 109
             110:      6(int) Load 105(param)
             111:      7(ptr) AccessChain 91(f) 92 67
                              Store 111 110
                              Store 95(color) 108
             113:      6(int) Load 101(e)
             114:      7(ptr) AccessChain 91(f) 92 67
             115:      6(int) Load 114
             116:      6(int) IAdd 113 115
             117:      6(int) IMul 112 116
             118:      6(int) Load 95(color)
             119:      6(int) IAdd 118 117
                              Store 95(color) 119
                              Store 128(param) 123
                              Store 129(param) 126
             131:      6(int) FunctionCall 25(foo2(f1;vf3;i1;) 128(param) 129(param) 130(param)
             132:      6(int) Load 130(param)
                              Store 127(tempArg) 132
                              Store 122(tempReturn) 131
             134:      6(int) Load 127(tempArg)
             135:   17(float) ConvertSToF 134
                              Store 133(arg) 135
             136:      6(int) Load 122(tempReturn)
             137:   17(float) ConvertSToF 136
                              Store 120(ret) 137
             138:   17(float) Load 120(ret)
             139:   17(float) Load 133(arg)
             140:   17(float) FAdd 138 139
             141:      6(int) ConvertFToS 140
             142:      6(int) Load 95(color)
             143:      6(int) IAdd 142 141
                              Store 95(color) 143
             144:      6(int) FunctionCall 28(foo3()
             145:      6(int) Load 95(color)
             146:      6(int) IAdd 145 144
                              Store 95(color) 146
             150:      6(int) Load 95(color)
             151:   17(float) ConvertSToF 150
             152:  147(fvec4) CompositeConstruct 151 151 151 151
                              Store 149(gl_FragColor) 152
                              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
              62:   17(float) Load 22(a)
              63:   17(float) FMul 61 62
              64:      6(int) ConvertFToS 63
                              Store 24(r) 64
              68:     18(ptr) AccessChain 23(b) 67
              69:   17(float) Load 68
              70:   17(float) FMul 65 69
              71:      6(int) ConvertFToS 70
                              ReturnValue 71
                              FunctionEnd
       28(foo3():      6(int) Function None 27
              29:             Label
              75:   17(float) Load 74(u)
              78:    77(bool) FOrdGreaterThan 75 76
                              SelectionMerge 80 None
                              BranchConditional 78 79 80
              79:               Label
                                Kill
              80:             Label
                              ReturnValue 84
                              FunctionEnd
