remap.hlsl.templatetypes.everything.frag
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 24954

                              Capability Shader
                              Capability Float64
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 5663  "main" 4872 4045
                              ExecutionMode 5663 OriginUpperLeft
                              Decorate 4872 Location 0
                              Decorate 4045 Location 0
               8:             TypeVoid
            1282:             TypeFunction 8
              13:             TypeFloat 32
              29:             TypeVector 13(float) 4
             666:             TypePointer Function 29(fvec4)
             255:             TypeFunction 13(float) 666(ptr)
            2572:   13(float) Constant 0
             667:             TypePointer Input 29(fvec4)
            4872:    667(ptr) Variable Input
             650:             TypePointer Output 13(float)
            4045:    650(ptr) Variable Output
            5663:           8 Function None 1282
           24953:             Label
            5786:    666(ptr) Variable Function
           24021:   29(fvec4) Load 4872
                              Store 5786 24021
            9338:   13(float) FunctionCall 3917 5786
                              Store 4045 9338
                              Return
                              FunctionEnd
            3917:   13(float) Function None 255
           10636:    666(ptr) FunctionParameter
           10637:             Label
                              ReturnValue 2572
                              FunctionEnd
