spv.140.frag

Linked fragment stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 93

                              Source GLSL 140
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginLowerLeft
                              Name 4  "main"
                              Name 9  "foo("
                              Name 12  "i1"
                              Name 17  "gl_FrontFacing"
                              Name 25  "i2"
                              Name 29  "o"
                              Name 34  "gl_ClipDistance"
                              Name 43  "k"
                              Name 55  "sampR"
                              Name 62  "sampB"
                              Name 86  "samp2Da"
                              Name 90  "bn"
                              MemberName 90(bn) 0  "matra"
                              MemberName 90(bn) 1  "matca"
                              MemberName 90(bn) 2  "matr"
                              MemberName 90(bn) 3  "matc"
                              MemberName 90(bn) 4  "matrdef"
                              Name 92  ""
                              Decorate 17(gl_FrontFacing) BuiltIn FrontFacing
                              Decorate 34(gl_ClipDistance) Smooth
                              Decorate 34(gl_ClipDistance) BuiltIn ClipDistance
                              Decorate 43(k) Smooth
                              Decorate 86(samp2Da) NoStaticUse
                              MemberDecorate 90(bn) 0 RowMajor
                              MemberDecorate 90(bn) 0 Offset 0
                              MemberDecorate 90(bn) 1 ColMajor
                              MemberDecorate 90(bn) 1 Offset 256
                              MemberDecorate 90(bn) 2 RowMajor
                              MemberDecorate 90(bn) 2 Offset 512
                              MemberDecorate 90(bn) 3 ColMajor
                              MemberDecorate 90(bn) 3 Offset 576
                              MemberDecorate 90(bn) 4 RowMajor
                              MemberDecorate 90(bn) 4 Offset 640
                              Decorate 90(bn) Block
                              Decorate 92 NoStaticUse
               2:             TypeVoid
               3:             TypeFunction 2
               7:             TypeFloat 32
               8:             TypeFunction 7(float)
              11:             TypePointer PrivateGlobal 7(float)
          12(i1):     11(ptr) Variable PrivateGlobal
              13:             TypePointer Function 7(float)
              15:             TypeBool
              16:             TypePointer Input 15(bool)
17(gl_FrontFacing):     16(ptr) Variable Input
              21:    7(float) Constant 3221225472
              23:    7(float) Constant 1073741824
          25(i2):     11(ptr) Variable PrivateGlobal
              26:    7(float) Constant 1120665600
              27:             TypeVector 7(float) 4
              28:             TypePointer Output 27(fvec4)
           29(o):     28(ptr) Variable Output
              30:             TypeInt 32 0
              31:     30(int) Constant 5
              32:             TypeArray 7(float) 31
              33:             TypePointer Input 32
34(gl_ClipDistance):     33(ptr) Variable Input
              35:             TypeInt 32 1
              36:     35(int) Constant 2
              37:             TypePointer Input 7(float)
              42:             TypePointer Input 27(fvec4)
           43(k):     42(ptr) Variable Input
              45:             TypeVector 35(int) 4
              52:             TypeImage 7(float) Rect sampled format:Unknown
              53:             TypeSampledImage 52
              54:             TypePointer UniformConstant 53
       55(sampR):     54(ptr) Variable UniformConstant
              57:             TypeVector 35(int) 2
              59:             TypeImage 35(int) Buffer sampled format:Unknown
              60:             TypeSampledImage 59
              61:             TypePointer UniformConstant 60
       62(sampB):     61(ptr) Variable UniformConstant
              67:             TypeVector 7(float) 2
              70:    7(float) Constant 1120403456
              81:             TypeImage 7(float) 2D sampled format:Unknown
              82:             TypeSampledImage 81
              83:     30(int) Constant 3
              84:             TypeArray 82 83
              85:             TypePointer UniformConstant 84
     86(samp2Da):     85(ptr) Variable UniformConstant
              87:             TypeMatrix 27(fvec4) 4
              88:     30(int) Constant 4
              89:             TypeArray 87 88
          90(bn):             TypeStruct 89 89 87 87 87
              91:             TypePointer Uniform 90(bn)
              92:     91(ptr) Variable Uniform
         4(main):           2 Function None 3
               5:             Label
              14:     13(ptr) Variable Function
              18:    15(bool) Load 17(gl_FrontFacing)
                              SelectionMerge 20 None
                              BranchConditional 18 19 22
              19:               Label
                                Store 14 21
                                Branch 20
              22:               Label
                                Store 14 23
                                Branch 20
              20:             Label
              24:    7(float) Load 14
                              Store 12(i1) 24
                              Store 25(i2) 26
              38:     37(ptr) AccessChain 34(gl_ClipDistance) 36
              39:    7(float) Load 38
              40:   27(fvec4) Load 29(o)
              41:   27(fvec4) CompositeInsert 39 40 1
                              Store 29(o) 41
              44:   27(fvec4) Load 43(k)
              46:   45(ivec4) ConvertFToS 44
              47:     35(int) CompositeExtract 46 0
              48:     37(ptr) AccessChain 34(gl_ClipDistance) 47
              49:    7(float) Load 48
              50:   27(fvec4) Load 29(o)
              51:   27(fvec4) CompositeInsert 49 50 2
                              Store 29(o) 51
              56:          53 Load 55(sampR)
              58:   57(ivec2) ImageQuerySize 56
              63:          60 Load 62(sampB)
              64:     35(int) ImageQuerySize 63
              65:   57(ivec2) CompositeConstruct 64 64
              66:   57(ivec2) IAdd 58 65
              68:   67(fvec2) ConvertSToF 66
              69:    7(float) CompositeExtract 68 0
              71:    7(float) FDiv 69 70
              72:   27(fvec4) Load 29(o)
              73:   27(fvec4) CompositeInsert 71 72 3
                              Store 29(o) 73
              74:    7(float) FunctionCall 9(foo()
              75:   27(fvec4) Load 29(o)
              76:   27(fvec4) CompositeInsert 74 75 2
                              Store 29(o) 76
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
         9(foo():    7(float) Function None 8
              10:             Label
              77:    7(float) Load 12(i1)
              78:    7(float) Load 25(i2)
              79:    7(float) FAdd 77 78
                              ReturnValue 79
                              FunctionEnd
