spv.1.4.sparseTexture.frag
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 213

                              Capability Shader
                              Capability StorageImageMultisample
                              Capability SparseResidency
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 29 33 42 46 59 63 84 96 119 133 149 152 159 162 177 181 189 206 208 212
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              SourceExtension  "GL_ARB_sparse_texture2"
                              Name 4  "main"
                              Name 8  "resident"
                              Name 13  "texel"
                              Name 18  "itexel"
                              Name 23  "utexel"
                              Name 29  "s2D"
                              Name 33  "c2"
                              Name 35  "ResType"
                              Name 42  "tempReturn"
                              Name 46  "is2D"
                              Name 49  "tempArg"
                              Name 50  "ResType"
                              Name 59  "tempReturn"
                              Name 63  "us2D"
                              Name 66  "tempArg"
                              Name 67  "ResType"
                              Name 84  "tempReturn"
                              Name 87  "tempArg"
                              Name 96  "tempReturn"
                              Name 99  "tempArg"
                              Name 119  "tempReturn"
                              Name 123  "tempArg"
                              Name 133  "tempReturn"
                              Name 137  "tempArg"
                              Name 149  "i2D"
                              Name 152  "ic2"
                              Name 159  "tempReturn"
                              Name 162  "ii2DMS"
                              Name 166  "tempArg"
                              Name 177  "ui3D"
                              Name 181  "ic3"
                              Name 189  "outColor"
                              Name 206  "c3"
                              Name 208  "c4"
                              Name 212  "offsets"
                              Decorate 29(s2D) DescriptorSet 0
                              Decorate 29(s2D) Binding 0
                              Decorate 33(c2) Location 0
                              Decorate 46(is2D) DescriptorSet 0
                              Decorate 46(is2D) Binding 1
                              Decorate 63(us2D) DescriptorSet 0
                              Decorate 63(us2D) Binding 2
                              Decorate 149(i2D) DescriptorSet 0
                              Decorate 149(i2D) Binding 3
                              Decorate 152(ic2) Flat
                              Decorate 152(ic2) Location 3
                              Decorate 162(ii2DMS) DescriptorSet 0
                              Decorate 162(ii2DMS) Binding 4
                              Decorate 177(ui3D) DescriptorSet 0
                              Decorate 177(ui3D) Binding 5
                              Decorate 181(ic3) Flat
                              Decorate 181(ic3) Location 4
                              Decorate 189(outColor) Location 0
                              Decorate 206(c3) Location 1
                              Decorate 208(c4) Location 2
                              Decorate 212(offsets) Flat
                              Decorate 212(offsets) Location 5
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypePointer Function 6(int)
               9:      6(int) Constant 0
              10:             TypeFloat 32
              11:             TypeVector 10(float) 4
              12:             TypePointer Function 11(fvec4)
              14:   10(float) Constant 0
              15:   11(fvec4) ConstantComposite 14 14 14 14
              16:             TypeVector 6(int) 4
              17:             TypePointer Function 16(ivec4)
              19:   16(ivec4) ConstantComposite 9 9 9 9
              20:             TypeInt 32 0
              21:             TypeVector 20(int) 4
              22:             TypePointer Function 21(ivec4)
              24:     20(int) Constant 0
              25:   21(ivec4) ConstantComposite 24 24 24 24
              26:             TypeImage 10(float) 2D sampled format:Unknown
              27:             TypeSampledImage 26
              28:             TypePointer UniformConstant 27
         29(s2D):     28(ptr) Variable UniformConstant
              31:             TypeVector 10(float) 2
              32:             TypePointer Input 31(fvec2)
          33(c2):     32(ptr) Variable Input
     35(ResType):             TypeStruct 6(int) 11(fvec4)
              41:             TypePointer Private 6(int)
  42(tempReturn):     41(ptr) Variable Private
              43:             TypeImage 6(int) 2D sampled format:Unknown
              44:             TypeSampledImage 43
              45:             TypePointer UniformConstant 44
        46(is2D):     45(ptr) Variable UniformConstant
     50(ResType):             TypeStruct 6(int) 16(ivec4)
  59(tempReturn):     41(ptr) Variable Private
              60:             TypeImage 20(int) 2D sampled format:Unknown
              61:             TypeSampledImage 60
              62:             TypePointer UniformConstant 61
        63(us2D):     62(ptr) Variable UniformConstant
     67(ResType):             TypeStruct 6(int) 21(ivec4)
              78:   10(float) Constant 1073741824
  84(tempReturn):     41(ptr) Variable Private
  96(tempReturn):     41(ptr) Variable Private
             110:             TypeVector 6(int) 2
             112:      6(int) Constant 2
 119(tempReturn):     41(ptr) Variable Private
 133(tempReturn):     41(ptr) Variable Private
             147:             TypeImage 10(float) 2D nonsampled format:Rgba32f
             148:             TypePointer UniformConstant 147
        149(i2D):    148(ptr) Variable UniformConstant
             151:             TypePointer Input 110(ivec2)
        152(ic2):    151(ptr) Variable Input
 159(tempReturn):     41(ptr) Variable Private
             160:             TypeImage 6(int) 2D multi-sampled nonsampled format:Rgba32i
             161:             TypePointer UniformConstant 160
     162(ii2DMS):    161(ptr) Variable UniformConstant
             165:      6(int) Constant 3
             175:             TypeImage 20(int) 3D nonsampled format:Rgba32ui
             176:             TypePointer UniformConstant 175
       177(ui3D):    176(ptr) Variable UniformConstant
             179:             TypeVector 6(int) 3
             180:             TypePointer Input 179(ivec3)
        181(ic3):    180(ptr) Variable Input
             188:             TypePointer Output 11(fvec4)
   189(outColor):    188(ptr) Variable Output
             191:             TypeBool
             204:             TypeVector 10(float) 3
             205:             TypePointer Input 204(fvec3)
         206(c3):    205(ptr) Variable Input
             207:             TypePointer Input 11(fvec4)
         208(c4):    207(ptr) Variable Input
             209:     20(int) Constant 4
             210:             TypeArray 110(ivec2) 209
             211:             TypePointer Input 210
    212(offsets):    211(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
     8(resident):      7(ptr) Variable Function
       13(texel):     12(ptr) Variable Function
      18(itexel):     17(ptr) Variable Function
      23(utexel):     22(ptr) Variable Function
     49(tempArg):     17(ptr) Variable Function
     66(tempArg):     22(ptr) Variable Function
     87(tempArg):     17(ptr) Variable Function
     99(tempArg):     22(ptr) Variable Function
    123(tempArg):     17(ptr) Variable Function
    137(tempArg):     22(ptr) Variable Function
    166(tempArg):     17(ptr) Variable Function
             193:     12(ptr) Variable Function
                              Store 8(resident) 9
                              Store 13(texel) 15
                              Store 18(itexel) 19
                              Store 23(utexel) 25
              30:          27 Load 29(s2D)
              34:   31(fvec2) Load 33(c2)
              36: 35(ResType) ImageSparseSampleImplicitLod 30 34
              37:   11(fvec4) CompositeExtract 36 1
                              Store 13(texel) 37
              38:      6(int) CompositeExtract 36 0
              39:      6(int) Load 8(resident)
              40:      6(int) BitwiseOr 39 38
                              Store 8(resident) 40
              47:          44 Load 46(is2D)
              48:   31(fvec2) Load 33(c2)
              51: 50(ResType) ImageSparseSampleImplicitLod 47 48 SignExtend 
              52:   16(ivec4) CompositeExtract 51 1
                              Store 49(tempArg) 52
              53:      6(int) CompositeExtract 51 0
                              Store 42(tempReturn) 53
              54:   16(ivec4) Load 49(tempArg)
              55:   11(fvec4) ConvertSToF 54
                              Store 13(texel) 55
              56:      6(int) Load 42(tempReturn)
              57:      6(int) Load 8(resident)
              58:      6(int) BitwiseOr 57 56
                              Store 8(resident) 58
              64:          61 Load 63(us2D)
              65:   31(fvec2) Load 33(c2)
              68: 67(ResType) ImageSparseSampleImplicitLod 64 65 ZeroExtend 
              69:   21(ivec4) CompositeExtract 68 1
                              Store 66(tempArg) 69
              70:      6(int) CompositeExtract 68 0
                              Store 59(tempReturn) 70
              71:   21(ivec4) Load 66(tempArg)
              72:   11(fvec4) ConvertUToF 71
                              Store 13(texel) 72
              73:      6(int) Load 59(tempReturn)
              74:      6(int) Load 8(resident)
              75:      6(int) BitwiseOr 74 73
                              Store 8(resident) 75
              76:          27 Load 29(s2D)
              77:   31(fvec2) Load 33(c2)
              79: 35(ResType) ImageSparseSampleExplicitLod 76 77 Lod 78
              80:   11(fvec4) CompositeExtract 79 1
                              Store 13(texel) 80
              81:      6(int) CompositeExtract 79 0
              82:      6(int) Load 8(resident)
              83:      6(int) BitwiseOr 82 81
                              Store 8(resident) 83
              85:          44 Load 46(is2D)
              86:   31(fvec2) Load 33(c2)
              88: 50(ResType) ImageSparseSampleExplicitLod 85 86 Lod SignExtend 78
              89:   16(ivec4) CompositeExtract 88 1
                              Store 87(tempArg) 89
              90:      6(int) CompositeExtract 88 0
                              Store 84(tempReturn) 90
              91:   16(ivec4) Load 87(tempArg)
              92:   11(fvec4) ConvertSToF 91
                              Store 13(texel) 92
              93:      6(int) Load 84(tempReturn)
              94:      6(int) Load 8(resident)
              95:      6(int) BitwiseOr 94 93
                              Store 8(resident) 95
              97:          61 Load 63(us2D)
              98:   31(fvec2) Load 33(c2)
             100: 67(ResType) ImageSparseSampleExplicitLod 97 98 Lod ZeroExtend 78
             101:   21(ivec4) CompositeExtract 100 1
                              Store 99(tempArg) 101
             102:      6(int) CompositeExtract 100 0
                              Store 96(tempReturn) 102
             103:   21(ivec4) Load 99(tempArg)
             104:   11(fvec4) ConvertUToF 103
                              Store 13(texel) 104
             105:      6(int) Load 96(tempReturn)
             106:      6(int) Load 8(resident)
             107:      6(int) BitwiseOr 106 105
                              Store 8(resident) 107
             108:          27 Load 29(s2D)
             109:   31(fvec2) Load 33(c2)
             111:  110(ivec2) ConvertFToS 109
             113:          26 Image 108
             114: 35(ResType) ImageSparseFetch 113 111 Lod 112
             115:   11(fvec4) CompositeExtract 114 1
                              Store 13(texel) 115
             116:      6(int) CompositeExtract 114 0
             117:      6(int) Load 8(resident)
             118:      6(int) BitwiseOr 117 116
                              Store 8(resident) 118
             120:          44 Load 46(is2D)
             121:   31(fvec2) Load 33(c2)
             122:  110(ivec2) ConvertFToS 121
             124:          43 Image 120
             125: 50(ResType) ImageSparseFetch 124 122 Lod SignExtend 112
             126:   16(ivec4) CompositeExtract 125 1
                              Store 123(tempArg) 126
             127:      6(int) CompositeExtract 125 0
                              Store 119(tempReturn) 127
             128:   16(ivec4) Load 123(tempArg)
             129:   11(fvec4) ConvertSToF 128
                              Store 13(texel) 129
             130:      6(int) Load 119(tempReturn)
             131:      6(int) Load 8(resident)
             132:      6(int) BitwiseOr 131 130
                              Store 8(resident) 132
             134:          61 Load 63(us2D)
             135:   31(fvec2) Load 33(c2)
             136:  110(ivec2) ConvertFToS 135
             138:          60 Image 134
             139: 67(ResType) ImageSparseFetch 138 136 Lod ZeroExtend 112
             140:   21(ivec4) CompositeExtract 139 1
                              Store 137(tempArg) 140
             141:      6(int) CompositeExtract 139 0
                              Store 133(tempReturn) 141
             142:   21(ivec4) Load 137(tempArg)
             143:   11(fvec4) ConvertUToF 142
                              Store 13(texel) 143
             144:      6(int) Load 133(tempReturn)
             145:      6(int) Load 8(resident)
             146:      6(int) BitwiseOr 145 144
                              Store 8(resident) 146
             150:         147 Load 149(i2D)
             153:  110(ivec2) Load 152(ic2)
             154: 35(ResType) ImageSparseRead 150 153
             155:   11(fvec4) CompositeExtract 154 1
                              Store 13(texel) 155
             156:      6(int) CompositeExtract 154 0
             157:      6(int) Load 8(resident)
             158:      6(int) BitwiseOr 157 156
                              Store 8(resident) 158
             163:         160 Load 162(ii2DMS)
             164:  110(ivec2) Load 152(ic2)
             167: 50(ResType) ImageSparseRead 163 164 Sample SignExtend 165
             168:   16(ivec4) CompositeExtract 167 1
                              Store 166(tempArg) 168
             169:      6(int) CompositeExtract 167 0
                              Store 159(tempReturn) 169
             170:   16(ivec4) Load 166(tempArg)
             171:   11(fvec4) ConvertSToF 170
                              Store 13(texel) 171
             172:      6(int) Load 159(tempReturn)
             173:      6(int) Load 8(resident)
             174:      6(int) BitwiseOr 173 172
                              Store 8(resident) 174
             178:         175 Load 177(ui3D)
             182:  179(ivec3) Load 181(ic3)
             183: 67(ResType) ImageSparseRead 178 182 ZeroExtend 
             184:   21(ivec4) CompositeExtract 183 1
                              Store 23(utexel) 184
             185:      6(int) CompositeExtract 183 0
             186:      6(int) Load 8(resident)
             187:      6(int) BitwiseOr 186 185
                              Store 8(resident) 187
             190:      6(int) Load 8(resident)
             192:   191(bool) ImageSparseTexelsResident 190
                              SelectionMerge 195 None
                              BranchConditional 192 194 197
             194:               Label
             196:   11(fvec4)   Load 13(texel)
                                Store 193 196
                                Branch 195
             197:               Label
             198:   16(ivec4)   Load 18(itexel)
             199:   11(fvec4)   ConvertSToF 198
             200:   21(ivec4)   Load 23(utexel)
             201:   11(fvec4)   ConvertUToF 200
             202:   11(fvec4)   FAdd 199 201
                                Store 193 202
                                Branch 195
             195:             Label
             203:   11(fvec4) Load 193
                              Store 189(outColor) 203
                              Return
                              FunctionEnd
