hlsl.inf.vert
Shader version: 500
0:? Sequence
0:2  Function Definition: @main( ( temp 4-component vector of float)
0:2    Function Parameters: 
0:?     Sequence
0:3      Sequence
0:3        move second child to first child ( temp float)
0:3          'f1' ( temp float)
0:3          Constant:
0:3            -1.#INF
0:4      Sequence
0:4        move second child to first child ( temp float)
0:4          'f2' ( temp float)
0:4          Constant:
0:4            +1.#INF
0:5      Sequence
0:5        move second child to first child ( temp float)
0:5          'f3' ( temp float)
0:5          Constant:
0:5            +1.#INF
0:6      Sequence
0:6        move second child to first child ( temp float)
0:6          'f4' ( temp float)
0:6          add ( temp float)
0:6            component-wise multiply ( temp float)
0:6              'f2' ( temp float)
0:6              Constant:
0:6                +1.#INF
0:6            Constant:
0:6              +1.#INF
0:10      Branch: Return with expression
0:10        Construct vec4 ( temp 4-component vector of float)
0:10          add ( temp float)
0:10            add ( temp float)
0:10              add ( temp float)
0:10                add ( temp float)
0:10                  add ( temp float)
0:10                    'f1' ( temp float)
0:10                    'f2' ( temp float)
0:10                  'f3' ( temp float)
0:10                'f4' ( temp float)
0:10              Constant:
0:10                -1.#INF
0:10            Constant:
0:10              1.#IND
0:2  Function Definition: main( ( temp void)
0:2    Function Parameters: 
0:?     Sequence
0:2      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' ( out 4-component vector of float Position)
0:2        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     '@entryPointOutput' ( out 4-component vector of float Position)


Linked vertex stage:


Shader version: 500
0:? Sequence
0:2  Function Definition: @main( ( temp 4-component vector of float)
0:2    Function Parameters: 
0:?     Sequence
0:3      Sequence
0:3        move second child to first child ( temp float)
0:3          'f1' ( temp float)
0:3          Constant:
0:3            -1.#INF
0:4      Sequence
0:4        move second child to first child ( temp float)
0:4          'f2' ( temp float)
0:4          Constant:
0:4            +1.#INF
0:5      Sequence
0:5        move second child to first child ( temp float)
0:5          'f3' ( temp float)
0:5          Constant:
0:5            +1.#INF
0:6      Sequence
0:6        move second child to first child ( temp float)
0:6          'f4' ( temp float)
0:6          add ( temp float)
0:6            component-wise multiply ( temp float)
0:6              'f2' ( temp float)
0:6              Constant:
0:6                +1.#INF
0:6            Constant:
0:6              +1.#INF
0:10      Branch: Return with expression
0:10        Construct vec4 ( temp 4-component vector of float)
0:10          add ( temp float)
0:10            add ( temp float)
0:10              add ( temp float)
0:10                add ( temp float)
0:10                  add ( temp float)
0:10                    'f1' ( temp float)
0:10                    'f2' ( temp float)
0:10                  'f3' ( temp float)
0:10                'f4' ( temp float)
0:10              Constant:
0:10                -1.#INF
0:10            Constant:
0:10              1.#IND
0:2  Function Definition: main( ( temp void)
0:2    Function Parameters: 
0:?     Sequence
0:2      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' ( out 4-component vector of float Position)
0:2        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     '@entryPointOutput' ( out 4-component vector of float Position)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 35
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "@main("
                              Name 12  "f1"
                              Name 14  "f2"
                              Name 16  "f3"
                              Name 17  "f4"
                              Name 35  "@entryPointOutput"
                              Decorate 35(@entryPointOutput) BuiltIn Position
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeFunction 7(fvec4)
              11:             TypePointer Function 6(float)
              13:    6(float) Constant 4286578688
              15:    6(float) Constant 2139095040
              29:    6(float) Constant 4290772992
              34:             TypePointer Output 7(fvec4)
35(@entryPointOutput):     34(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              36:    7(fvec4) FunctionCall 9(@main()
                              Store 35(@entryPointOutput) 36
                              Return
                              FunctionEnd
       9(@main():    7(fvec4) Function None 8
              10:             Label
          12(f1):     11(ptr) Variable Function
          14(f2):     11(ptr) Variable Function
          16(f3):     11(ptr) Variable Function
          17(f4):     11(ptr) Variable Function
                              Store 12(f1) 13
                              Store 14(f2) 15
                              Store 16(f3) 15
              18:    6(float) Load 14(f2)
              19:    6(float) FMul 18 15
              20:    6(float) FAdd 19 15
                              Store 17(f4) 20
              21:    6(float) Load 12(f1)
              22:    6(float) Load 14(f2)
              23:    6(float) FAdd 21 22
              24:    6(float) Load 16(f3)
              25:    6(float) FAdd 23 24
              26:    6(float) Load 17(f4)
              27:    6(float) FAdd 25 26
              28:    6(float) FAdd 27 13
              30:    6(float) FAdd 28 29
              31:    7(fvec4) CompositeConstruct 30 30 30 30
                              ReturnValue 31
                              FunctionEnd
