spv.140.frag
Validation failed
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 96

                              Capability Shader
                              Capability ClipDistance
                              Capability SampledRect
                              Capability SampledBuffer
                              Capability ImageQuery
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 14 23 28 38
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 140
                              Name 4  "main"
                              Name 8  "foo("
                              Name 11  "i1"
                              Name 14  "gl_FrontFacing"
                              Name 19  "i2"
                              Name 23  "o"
                              Name 28  "gl_ClipDistance"
                              Name 38  "k"
                              Name 50  "sampR"
                              Name 58  "sampB"
                              Name 82  "samp2Da"
                              Name 87  "bn"
                              MemberName 87(bn) 0  "matra"
                              MemberName 87(bn) 1  "matca"
                              MemberName 87(bn) 2  "matr"
                              MemberName 87(bn) 3  "matc"
                              MemberName 87(bn) 4  "matrdef"
                              Name 89  ""
                              Name 92  "bi"
                              MemberName 92(bi) 0  "v"
                              Name 95  "bname"
                              Decorate 14(gl_FrontFacing) BuiltIn FrontFacing
                              Decorate 28(gl_ClipDistance) BuiltIn ClipDistance
                              Decorate 50(sampR) DescriptorSet 0
                              Decorate 50(sampR) Binding 0
                              Decorate 58(sampB) DescriptorSet 0
                              Decorate 58(sampB) Binding 0
                              Decorate 82(samp2Da) DescriptorSet 0
                              Decorate 82(samp2Da) Binding 0
                              Decorate 85 ArrayStride 64
                              Decorate 86 ArrayStride 64
                              MemberDecorate 87(bn) 0 RowMajor
                              MemberDecorate 87(bn) 0 Offset 0
                              MemberDecorate 87(bn) 0 MatrixStride 16
                              MemberDecorate 87(bn) 1 ColMajor
                              MemberDecorate 87(bn) 1 Offset 256
                              MemberDecorate 87(bn) 1 MatrixStride 16
                              MemberDecorate 87(bn) 2 RowMajor
                              MemberDecorate 87(bn) 2 Offset 512
                              MemberDecorate 87(bn) 2 MatrixStride 16
                              MemberDecorate 87(bn) 3 ColMajor
                              MemberDecorate 87(bn) 3 Offset 576
                              MemberDecorate 87(bn) 3 MatrixStride 16
                              MemberDecorate 87(bn) 4 RowMajor
                              MemberDecorate 87(bn) 4 Offset 1024
                              MemberDecorate 87(bn) 4 MatrixStride 16
                              Decorate 87(bn) Block
                              Decorate 89 DescriptorSet 0
                              Decorate 89 Binding 0
                              Decorate 91 ArrayStride 16
                              MemberDecorate 92(bi) 0 Offset 0
                              Decorate 92(bi) Block
                              Decorate 95(bname) DescriptorSet 0
                              Decorate 95(bname) Binding 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeFunction 6(float)
              10:             TypePointer Private 6(float)
          11(i1):     10(ptr) Variable Private
              12:             TypeBool
              13:             TypePointer Input 12(bool)
14(gl_FrontFacing):     13(ptr) Variable Input
              16:    6(float) Constant 3221225472
              17:    6(float) Constant 1073741824
          19(i2):     10(ptr) Variable Private
              20:    6(float) Constant 1120665600
              21:             TypeVector 6(float) 4
              22:             TypePointer Output 21(fvec4)
           23(o):     22(ptr) Variable Output
              24:             TypeInt 32 0
              25:     24(int) Constant 5
              26:             TypeArray 6(float) 25
              27:             TypePointer Input 26
28(gl_ClipDistance):     27(ptr) Variable Input
              29:             TypeInt 32 1
              30:     29(int) Constant 2
              31:             TypePointer Input 6(float)
              34:     24(int) Constant 1
              35:             TypePointer Output 6(float)
              37:             TypePointer Input 21(fvec4)
           38(k):     37(ptr) Variable Input
              40:             TypeVector 29(int) 4
              45:     24(int) Constant 2
              47:             TypeImage 6(float) Rect sampled format:Unknown
              48:             TypeSampledImage 47
              49:             TypePointer UniformConstant 48
       50(sampR):     49(ptr) Variable UniformConstant
              53:             TypeVector 29(int) 2
              55:             TypeImage 29(int) Buffer sampled format:Unknown
              56:             TypeSampledImage 55
              57:             TypePointer UniformConstant 56
       58(sampB):     57(ptr) Variable UniformConstant
              64:             TypeVector 6(float) 2
              67:    6(float) Constant 1120403456
              69:     24(int) Constant 3
              78:             TypeImage 6(float) 2D sampled format:Unknown
              79:             TypeSampledImage 78
              80:             TypeArray 79 69
              81:             TypePointer UniformConstant 80
     82(samp2Da):     81(ptr) Variable UniformConstant
              83:             TypeMatrix 21(fvec4) 4
              84:     24(int) Constant 4
              85:             TypeArray 83 84
              86:             TypeArray 83 84
          87(bn):             TypeStruct 85 86 83 83 83
              88:             TypePointer Uniform 87(bn)
              89:     88(ptr) Variable Uniform
              90:             TypeVector 6(float) 3
              91:             TypeArray 90(fvec3) 45
          92(bi):             TypeStruct 91
              93:             TypeArray 92(bi) 84
              94:             TypePointer Uniform 93
       95(bname):     94(ptr) Variable Uniform
         4(main):           2 Function None 3
               5:             Label
              15:    12(bool) Load 14(gl_FrontFacing)
              18:    6(float) Select 15 16 17
                              Store 11(i1) 18
                              Store 19(i2) 20
              32:     31(ptr) AccessChain 28(gl_ClipDistance) 30
              33:    6(float) Load 32
              36:     35(ptr) AccessChain 23(o) 34
                              Store 36 33
              39:   21(fvec4) Load 38(k)
              41:   40(ivec4) ConvertFToS 39
              42:     29(int) CompositeExtract 41 0
              43:     31(ptr) AccessChain 28(gl_ClipDistance) 42
              44:    6(float) Load 43
              46:     35(ptr) AccessChain 23(o) 45
                              Store 46 44
              51:          48 Load 50(sampR)
              52:          47 Image 51
              54:   53(ivec2) ImageQuerySize 52
              59:          56 Load 58(sampB)
              60:          55 Image 59
              61:     29(int) ImageQuerySize 60
              62:   53(ivec2) CompositeConstruct 61 61
              63:   53(ivec2) IAdd 54 62
              65:   64(fvec2) ConvertSToF 63
              66:    6(float) CompositeExtract 65 0
              68:    6(float) FDiv 66 67
              70:     35(ptr) AccessChain 23(o) 69
                              Store 70 68
              71:    6(float) FunctionCall 8(foo()
              72:     35(ptr) AccessChain 23(o) 45
                              Store 72 71
                              Return
                              FunctionEnd
         8(foo():    6(float) Function None 7
               9:             Label
              73:    6(float) Load 11(i1)
              74:    6(float) Load 19(i2)
              75:    6(float) FAdd 73 74
                              ReturnValue 75
                              FunctionEnd
