hlsl.float1.frag
Shader version: 450
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: 450
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): 80001
// Id's are bound by 27

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction"
                              ExecutionMode 4 OriginUpperLeft
                              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
