hlsl.flattenSubset.frag
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 67

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 50
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 21  "samp"
                              Name 33  "tex"
                              Name 50  "@entryPointOutput"
                              Decorate 21(samp) DescriptorSet 0
                              Decorate 21(samp) Binding 0
                              Decorate 33(tex) DescriptorSet 0
                              Decorate 33(tex) Binding 1
                              Decorate 50(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
              13:             TypeSampler
              20:             TypePointer UniformConstant 13
        21(samp):     20(ptr) Variable UniformConstant
              31:             TypeImage 6(float) 2D sampled format:Unknown
              32:             TypePointer UniformConstant 31
         33(tex):     32(ptr) Variable UniformConstant
              37:             TypeSampledImage 31
              39:             TypeVector 6(float) 2
              40:    6(float) Constant 1056964608
              41:   39(fvec2) ConstantComposite 40 40
              49:             TypePointer Output 7(fvec4)
50(@entryPointOutput):     49(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              58:          13 Load 21(samp)
              62:          31 Load 33(tex)
              65:          37 SampledImage 62 58
              66:    7(fvec4) ImageSampleImplicitLod 65 41
                              Store 50(@entryPointOutput) 66
                              Return
                              FunctionEnd
