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

                              Capability Shader
                              Capability InterpolationFunction
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 12 37
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              Name 4  "main"
                              Name 9  "v43"
                              Name 12  "in4"
                              Name 17  "v42"
                              Name 23  "v44"
                              Name 29  "v41"
                              Name 35  "v33"
                              Name 37  "in3"
                              Name 40  "v32"
                              Name 43  "v31"
                              Decorate 12(in4) Location 0
                              Decorate 37(in3) Location 1
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
               8:             TypePointer Function 7(fvec3)
              10:             TypeVector 6(float) 4
              11:             TypePointer Input 10(fvec4)
         12(in4):     11(ptr) Variable Input
              15:             TypeVector 6(float) 2
              16:             TypePointer Function 15(fvec2)
              18:             TypeInt 32 1
              19:     18(int) Constant 1
              22:             TypePointer Function 10(fvec4)
              24:    6(float) Constant 1073741824
              25:   15(fvec2) ConstantComposite 24 24
              28:             TypePointer Function 6(float)
              30:             TypeInt 32 0
              31:     30(int) Constant 1
              32:             TypePointer Input 6(float)
              36:             TypePointer Input 7(fvec3)
         37(in3):     36(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
          9(v43):      8(ptr) Variable Function
         17(v42):     16(ptr) Variable Function
         23(v44):     22(ptr) Variable Function
         29(v41):     28(ptr) Variable Function
         35(v33):      8(ptr) Variable Function
         40(v32):     16(ptr) Variable Function
         43(v31):     28(ptr) Variable Function
              13:   10(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 12(in4)
              14:    7(fvec3) VectorShuffle 13 13 3 2 0
                              Store 9(v43) 14
              20:   10(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 12(in4) 19
              21:   15(fvec2) VectorShuffle 20 20 2 0
                              Store 17(v42) 21
              26:   10(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 12(in4) 25
              27:   10(fvec4) VectorShuffle 26 26 2 1 0 3
                              Store 23(v44) 27
              33:     32(ptr) AccessChain 12(in4) 31
              34:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 33 25
                              Store 29(v41) 34
              38:    7(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 37(in3)
              39:    7(fvec3) VectorShuffle 38 38 1 2 0
                              Store 35(v33) 39
              41:    7(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 37(in3) 19
              42:   15(fvec2) VectorShuffle 41 41 2 0
                              Store 40(v32) 42
              44:     32(ptr) AccessChain 12(in4) 31
              45:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 44 25
                              Store 43(v31) 45
                              Return
                              FunctionEnd
