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 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"
               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
