spv.swizzle.frag
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 108

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 14 30 69 107
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 140
                              Name 4  "main"
                              Name 8  "blendscale"
                              Name 12  "w"
                              Name 14  "u"
                              Name 16  "w_dep"
                              Name 18  "w_reorder"
                              Name 20  "w2"
                              Name 22  "w_flow"
                              Name 30  "t"
                              Name 49  "w_undef"
                              Name 56  "p"
                              Name 69  "gl_FragColor"
                              Name 81  "c"
                              Name 83  "rep"
                              Name 107  "blend"
                              Decorate 14(u) Location 1
                              Decorate 30(t) Location 2
                              Decorate 69(gl_FragColor) Location 0
                              Decorate 107(blend) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               9:    6(float) Constant 1071971828
              10:             TypeVector 6(float) 4
              11:             TypePointer Function 10(fvec4)
              13:             TypePointer Input 10(fvec4)
           14(u):     13(ptr) Variable Input
              25:             TypeInt 32 0
              26:     25(int) Constant 2
              28:             TypeVector 6(float) 2
              29:             TypePointer Input 28(fvec2)
           30(t):     29(ptr) Variable Input
              35:     25(int) Constant 0
              40:     25(int) Constant 1
              54:             TypeBool
              55:             TypePointer Private 54(bool)
           56(p):     55(ptr) Variable Private
              60:             TypePointer Input 6(float)
              68:             TypePointer Output 10(fvec4)
69(gl_FragColor):     68(ptr) Variable Output
              80:             TypePointer Function 28(fvec2)
              84:    6(float) Constant 0
              85:    6(float) Constant 1065353216
              86:   10(fvec4) ConstantComposite 84 84 84 85
              92:    6(float) Constant 3212836864
             102:    6(float) Constant 1079613850
      107(blend):     60(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
   8(blendscale):      7(ptr) Variable Function
           12(w):     11(ptr) Variable Function
       16(w_dep):     11(ptr) Variable Function
   18(w_reorder):     11(ptr) Variable Function
          20(w2):     11(ptr) Variable Function
      22(w_flow):     11(ptr) Variable Function
     49(w_undef):     11(ptr) Variable Function
           81(c):     80(ptr) Variable Function
         83(rep):     11(ptr) Variable Function
                              Store 8(blendscale) 9
              15:   10(fvec4) Load 14(u)
                              Store 12(w) 15
              17:   10(fvec4) Load 14(u)
                              Store 16(w_dep) 17
              19:   10(fvec4) Load 14(u)
                              Store 18(w_reorder) 19
              21:   10(fvec4) Load 14(u)
                              Store 20(w2) 21
              23:   10(fvec4) Load 14(u)
                              Store 22(w_flow) 23
              24:    6(float) Load 8(blendscale)
              27:      7(ptr) AccessChain 18(w_reorder) 26
                              Store 27 24
              31:   28(fvec2) Load 30(t)
              32:   10(fvec4) Load 12(w)
              33:   10(fvec4) VectorShuffle 32 31 0 5 2 4
                              Store 12(w) 33
              34:    6(float) Load 8(blendscale)
              36:      7(ptr) AccessChain 18(w_reorder) 35
                              Store 36 34
              37:   10(fvec4) Load 14(u)
              38:   10(fvec4) VectorShuffle 37 37 2 3 0 1
                              Store 20(w2) 38
              39:    6(float) Load 8(blendscale)
              41:      7(ptr) AccessChain 18(w_reorder) 40
                              Store 41 39
              42:   10(fvec4) Load 20(w2)
              43:   28(fvec2) VectorShuffle 42 42 0 2
              44:   10(fvec4) Load 16(w_dep)
              45:   10(fvec4) VectorShuffle 44 43 4 5 2 3
                              Store 16(w_dep) 45
              46:   28(fvec2) Load 30(t)
              47:   10(fvec4) Load 16(w_dep)
              48:   10(fvec4) VectorShuffle 47 46 0 1 4 5
                              Store 16(w_dep) 48
              50:   10(fvec4) Load 14(u)
              51:   28(fvec2) VectorShuffle 50 50 2 3
              52:   10(fvec4) Load 49(w_undef)
              53:   10(fvec4) VectorShuffle 52 51 4 5 2 3
                              Store 49(w_undef) 53
              57:    54(bool) Load 56(p)
                              SelectionMerge 59 None
                              BranchConditional 57 58 64
              58:               Label
              61:     60(ptr)   AccessChain 30(t) 35
              62:    6(float)   Load 61
              63:      7(ptr)   AccessChain 22(w_flow) 35
                                Store 63 62
                                Branch 59
              64:               Label
              65:     60(ptr)   AccessChain 30(t) 40
              66:    6(float)   Load 65
              67:      7(ptr)   AccessChain 22(w_flow) 35
                                Store 67 66
                                Branch 59
              59:             Label
              70:   10(fvec4) Load 18(w_reorder)
              71:   10(fvec4) Load 49(w_undef)
              72:   10(fvec4) Load 12(w)
              73:   10(fvec4) Load 20(w2)
              74:   10(fvec4) FMul 72 73
              75:   10(fvec4) Load 16(w_dep)
              76:   10(fvec4) FMul 74 75
              77:   10(fvec4) Load 22(w_flow)
              78:   10(fvec4) FMul 76 77
              79:   10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 70 71 78
                              Store 69(gl_FragColor) 79
              82:   28(fvec2) Load 30(t)
                              Store 81(c) 82
                              Store 83(rep) 86
              87:      7(ptr) AccessChain 81(c) 35
              88:    6(float) Load 87
              89:    54(bool) FOrdLessThan 88 84
                              SelectionMerge 91 None
                              BranchConditional 89 90 91
              90:               Label
              93:      7(ptr)   AccessChain 81(c) 35
              94:    6(float)   Load 93
              95:    6(float)   FMul 94 92
              96:      7(ptr)   AccessChain 81(c) 35
                                Store 96 95
                                Branch 91
              91:             Label
              97:      7(ptr) AccessChain 81(c) 35
              98:    6(float) Load 97
              99:    54(bool) FOrdLessThanEqual 98 85
                              SelectionMerge 101 None
                              BranchConditional 99 100 101
             100:               Label
             103:      7(ptr)   AccessChain 83(rep) 35
                                Store 103 102
                                Branch 101
             101:             Label
             104:   10(fvec4) Load 83(rep)
             105:   10(fvec4) Load 69(gl_FragColor)
             106:   10(fvec4) FAdd 105 104
                              Store 69(gl_FragColor) 106
                              Return
                              FunctionEnd
