hlsl.promote.vec1.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:3  Function Definition: main( (temp 4-component vector of float)
0:3    Function Parameters: 
0:?     Sequence
0:7      move second child to first child (temp float)
0:7        'f1a' (temp float)
0:7        Construct float (temp float)
0:7          'f1b' (temp 1-component vector of float)
0:8      move second child to first child (temp 1-component vector of float)
0:8        'f1b' (temp 1-component vector of float)
0:8        Construct float (temp 1-component vector of float)
0:8          'f1a' (temp float)
0:11      step (global 3-component vector of float)
0:11        Constant:
0:11          0.000000
0:11          0.000000
0:11          0.000000
0:11        'f3' (temp 3-component vector of float)
0:13      sine (global float)
0:13        Construct float (in float)
0:13          'f1b' (temp 1-component vector of float)
0:15      Sequence
0:15        move second child to first child (temp 4-component vector of float)
0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:?           Constant:
0:?             0.000000
0:?             0.000000
0:?             0.000000
0:?             0.000000
0:15        Branch: Return
0:?   Linker Objects
0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:3  Function Definition: main( (temp 4-component vector of float)
0:3    Function Parameters: 
0:?     Sequence
0:7      move second child to first child (temp float)
0:7        'f1a' (temp float)
0:7        Construct float (temp float)
0:7          'f1b' (temp 1-component vector of float)
0:8      move second child to first child (temp 1-component vector of float)
0:8        'f1b' (temp 1-component vector of float)
0:8        Construct float (temp 1-component vector of float)
0:8          'f1a' (temp float)
0:11      step (global 3-component vector of float)
0:11        Constant:
0:11          0.000000
0:11          0.000000
0:11          0.000000
0:11        'f3' (temp 3-component vector of float)
0:13      sine (global float)
0:13        Construct float (in float)
0:13          'f1b' (temp 1-component vector of float)
0:15      Sequence
0:15        move second child to first child (temp 4-component vector of float)
0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:?           Constant:
0:?             0.000000
0:?             0.000000
0:?             0.000000
0:?             0.000000
0:15        Branch: Return
0:?   Linker Objects
0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 23
                              ExecutionMode 4 OriginUpperLeft
                              Name 4  "main"
                              Name 8  "f1a"
                              Name 9  "f1b"
                              Name 16  "f3"
                              Name 23  "@entryPointOutput"
                              Decorate 23(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
              12:             TypeVector 6(float) 3
              13:    6(float) Constant 0
              14:   12(fvec3) ConstantComposite 13 13 13
              15:             TypePointer Function 12(fvec3)
              21:             TypeVector 6(float) 4
              22:             TypePointer Output 21(fvec4)
23(@entryPointOutput):     22(ptr) Variable Output
              24:   21(fvec4) ConstantComposite 13 13 13 13
         4(main):           2 Function None 3
               5:             Label
          8(f1a):      7(ptr) Variable Function
          9(f1b):      7(ptr) Variable Function
          16(f3):     15(ptr) Variable Function
              10:    6(float) Load 9(f1b)
                              Store 8(f1a) 10
              11:    6(float) Load 8(f1a)
                              Store 9(f1b) 11
              17:   12(fvec3) Load 16(f3)
              18:   12(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 14 17
              19:    6(float) Load 9(f1b)
              20:    6(float) ExtInst 1(GLSL.std.450) 13(Sin) 19
                              Store 23(@entryPointOutput) 24
                              Return
                              FunctionEnd
