remap.basic.dcefunc.frag
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 22

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 17 19
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              Name 4  "main"
                              Name 17  "outf4"
                              Name 19  "inf"
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
               8:             TypeFunction 7(fvec3)
              11:    6(float) Constant 0
              12:    7(fvec3) ConstantComposite 11 11 11
              15:             TypeVector 6(float) 4
              16:             TypePointer Output 15(fvec4)
       17(outf4):     16(ptr) Variable Output
              18:             TypePointer Input 6(float)
         19(inf):     18(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              20:    6(float) Load 19(inf)
              21:   15(fvec4) CompositeConstruct 20 20 20 20
                              Store 17(outf4) 21
                              Return
                              FunctionEnd
