hlsl.float1.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1  Sequence
0:1    move second child to first child ( temp 1-component vector of float)
0:1      'f1' ( global 1-component vector of float)
0:1      Constant:
0:1        1.000000
0:2  Sequence
0:2    move second child to first child ( temp float)
0:2      'scalar' ( global float)
0:2      Constant:
0:2        2.000000
0:5  Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float)
0:5    Function Parameters: 
0:5      'inFloat1' ( in 1-component vector of float)
0:5      'inScalar' ( in float)
0:?     Sequence
0:6      Branch: Return with expression
0:6        add ( temp 1-component vector of float)
0:6          vector-scale ( temp 1-component vector of float)
0:6            'f1' ( global 1-component vector of float)
0:6            'scalar' ( global float)
0:6          vector-scale ( temp 1-component vector of float)
0:6            'inFloat1' ( in 1-component vector of float)
0:6            'inScalar' ( in float)
0:?   Linker Objects
0:?     'f1' ( global 1-component vector of float)
0:?     'scalar' ( global float)


Linked fragment stage:

WARNING: Linking fragment stage: Entry point not found

Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1  Sequence
0:1    move second child to first child ( temp 1-component vector of float)
0:1      'f1' ( global 1-component vector of float)
0:1      Constant:
0:1        1.000000
0:2  Sequence
0:2    move second child to first child ( temp float)
0:2      'scalar' ( global float)
0:2      Constant:
0:2        2.000000
0:5  Function Definition: ShaderFunction(vf1;f1; ( temp 1-component vector of float)
0:5    Function Parameters: 
0:5      'inFloat1' ( in 1-component vector of float)
0:5      'inScalar' ( in float)
0:?     Sequence
0:6      Branch: Return with expression
0:6        add ( temp 1-component vector of float)
0:6          vector-scale ( temp 1-component vector of float)
0:6            'f1' ( global 1-component vector of float)
0:6            'scalar' ( global float)
0:6          vector-scale ( temp 1-component vector of float)
0:6            'inFloat1' ( in 1-component vector of float)
0:6            'inScalar' ( in float)
0:?   Linker Objects
0:?     'f1' ( global 1-component vector of float)
0:?     'scalar' ( global float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction"
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "PixelShaderFunction"
                              Name 11  "ShaderFunction(vf1;f1;"
                              Name 9  "inFloat1"
                              Name 10  "inScalar"
                              Name 14  "f1"
                              Name 16  "scalar"
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               8:             TypeFunction 6(float) 7(ptr) 7(ptr)
              13:             TypePointer Private 6(float)
          14(f1):     13(ptr) Variable Private
              15:    6(float) Constant 1065353216
      16(scalar):     13(ptr) Variable Private
              17:    6(float) Constant 1073741824
4(PixelShaderFunction):           2 Function None 3
               5:             Label
                              Store 14(f1) 15
                              Store 16(scalar) 17
                              Return
                              FunctionEnd
11(ShaderFunction(vf1;f1;):    6(float) Function None 8
     9(inFloat1):      7(ptr) FunctionParameter
    10(inScalar):      7(ptr) FunctionParameter
              12:             Label
              18:    6(float) Load 14(f1)
              19:    6(float) Load 16(scalar)
              20:    6(float) IMul 18 19
              21:    6(float) Load 9(inFloat1)
              22:    6(float) Load 10(inScalar)
              23:    6(float) IMul 21 22
              24:    6(float) FAdd 20 23
                              ReturnValue 24
                              FunctionEnd
