hlsl.shapeConvRet.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: foo( ( temp 3-component vector of int)
0:2    Function Parameters: 
0:?     Sequence
0:3      Branch: Return with expression
0:3        Constant:
0:3          13 (const int)
0:3          13 (const int)
0:3          13 (const int)
0:7  Function Definition: @main(f1; ( temp 4-component vector of float)
0:7    Function Parameters: 
0:7      'f' ( in float)
0:?     Sequence
0:8      Branch: Return with expression
0:8        Construct vec4 ( temp 4-component vector of float)
0:8          'f' ( in float)
0:7  Function Definition: main( ( temp void)
0:7    Function Parameters: 
0:?     Sequence
0:7      move second child to first child ( temp float)
0:?         'f' ( temp float)
0:?         'f' (layout( location=0) in float)
0:7      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7        Function Call: @main(f1; ( temp 4-component vector of float)
0:?           'f' ( temp float)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'f' (layout( location=0) in float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: foo( ( temp 3-component vector of int)
0:2    Function Parameters: 
0:?     Sequence
0:3      Branch: Return with expression
0:3        Constant:
0:3          13 (const int)
0:3          13 (const int)
0:3          13 (const int)
0:7  Function Definition: @main(f1; ( temp 4-component vector of float)
0:7    Function Parameters: 
0:7      'f' ( in float)
0:?     Sequence
0:8      Branch: Return with expression
0:8        Construct vec4 ( temp 4-component vector of float)
0:8          'f' ( in float)
0:7  Function Definition: main( ( temp void)
0:7    Function Parameters: 
0:?     Sequence
0:7      move second child to first child ( temp float)
0:?         'f' ( temp float)
0:?         'f' (layout( location=0) in float)
0:7      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7        Function Call: @main(f1; ( temp 4-component vector of float)
0:?           'f' ( temp float)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'f' (layout( location=0) in float)

// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 35

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 28 31
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "foo("
                              Name 16  "@main(f1;"
                              Name 15  "f"
                              Name 26  "f"
                              Name 28  "f"
                              Name 31  "@entryPointOutput"
                              Name 32  "param"
                              Decorate 28(f) Location 0
                              Decorate 31(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypeVector 6(int) 3
               8:             TypeFunction 7(ivec3)
              11:             TypeFloat 32
              12:             TypePointer Function 11(float)
              13:             TypeVector 11(float) 4
              14:             TypeFunction 13(fvec4) 12(ptr)
              18:      6(int) Constant 13
              19:    7(ivec3) ConstantComposite 18 18 18
              27:             TypePointer Input 11(float)
           28(f):     27(ptr) Variable Input
              30:             TypePointer Output 13(fvec4)
31(@entryPointOutput):     30(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
           26(f):     12(ptr) Variable Function
       32(param):     12(ptr) Variable Function
              29:   11(float) Load 28(f)
                              Store 26(f) 29
              33:   11(float) Load 26(f)
                              Store 32(param) 33
              34:   13(fvec4) FunctionCall 16(@main(f1;) 32(param)
                              Store 31(@entryPointOutput) 34
                              Return
                              FunctionEnd
         9(foo():    7(ivec3) Function None 8
              10:             Label
                              ReturnValue 19
                              FunctionEnd
   16(@main(f1;):   13(fvec4) Function None 14
           15(f):     12(ptr) FunctionParameter
              17:             Label
              22:   11(float) Load 15(f)
              23:   13(fvec4) CompositeConstruct 22 22 22 22
                              ReturnValue 23
                              FunctionEnd
