hlsl.shapeConvRet.frag
Shader version: 450
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' (layout(location=0 ) in float)
0:?     Sequence
0:8      Sequence
0:8        move second child to first child (temp 4-component vector of float)
0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:8          Construct vec4 (temp 4-component vector of float)
0:8            'f' (layout(location=0 ) in float)
0:8        Branch: Return
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: 450
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' (layout(location=0 ) in float)
0:?     Sequence
0:8      Sequence
0:8        move second child to first child (temp 4-component vector of float)
0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:8          Construct vec4 (temp 4-component vector of float)
0:8            'f' (layout(location=0 ) in float)
0:8        Branch: Return
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): 80001
// Id's are bound by 24

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 18 20
                              ExecutionMode 4 OriginUpperLeft
                              Name 4  "main"
                              Name 9  "foo("
                              Name 18  "@entryPointOutput"
                              Name 20  "f"
                              Decorate 18(@entryPointOutput) Location 0
                              Decorate 20(f) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypeVector 6(int) 3
               8:             TypeFunction 7(ivec3)
              11:      6(int) Constant 13
              12:    7(ivec3) ConstantComposite 11 11 11
              15:             TypeFloat 32
              16:             TypeVector 15(float) 4
              17:             TypePointer Output 16(fvec4)
18(@entryPointOutput):     17(ptr) Variable Output
              19:             TypePointer Input 15(float)
           20(f):     19(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              21:   15(float) Load 20(f)
              22:   16(fvec4) CompositeConstruct 21 21 21 21
                              Store 18(@entryPointOutput) 22
                              Return
                              FunctionEnd
         9(foo():    7(ivec3) Function None 8
              10:             Label
                              ReturnValue 12
                              FunctionEnd
