spv.conditionalDiscard.frag
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 36

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 17 34
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 400
                              Name 4  "main"
                              Name 9  "v"
                              Name 13  "tex"
                              Name 17  "coord"
                              Name 34  "gl_FragColor"
                              Decorate 13(tex) DescriptorSet 0
                              Decorate 34(gl_FragColor) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
              10:             TypeImage 6(float) 2D sampled format:Unknown
              11:             TypeSampledImage 10
              12:             TypePointer UniformConstant 11
         13(tex):     12(ptr) Variable UniformConstant
              15:             TypeVector 6(float) 2
              16:             TypePointer Input 15(fvec2)
       17(coord):     16(ptr) Variable Input
              21:    6(float) Constant 1036831949
              22:    6(float) Constant 1045220557
              23:    6(float) Constant 1050253722
              24:    6(float) Constant 1053609165
              25:    7(fvec4) ConstantComposite 21 22 23 24
              26:             TypeBool
              27:             TypeVector 26(bool) 4
              33:             TypePointer Output 7(fvec4)
34(gl_FragColor):     33(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
            9(v):      8(ptr) Variable Function
              14:          11 Load 13(tex)
              18:   15(fvec2) Load 17(coord)
              19:    7(fvec4) ImageSampleImplicitLod 14 18
                              Store 9(v) 19
              20:    7(fvec4) Load 9(v)
              28:   27(bvec4) FOrdEqual 20 25
              29:    26(bool) All 28
                              SelectionMerge 31 None
                              BranchConditional 29 30 31
              30:               Label
                                Kill
              31:             Label
              35:    7(fvec4) Load 9(v)
                              Store 34(gl_FragColor) 35
                              Return
                              FunctionEnd
