hlsl.promote.vec1.frag
Shader version: 500
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 ( temp 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 ( temp float)
0:13        Construct float ( in float)
0:13          'f1b' ( temp 1-component vector of float)
0:15      Branch: Return with expression
0:15        Constant:
0:15          0.000000
0:15          0.000000
0:15          0.000000
0:15          0.000000
0:3  Function Definition: main( ( temp void)
0:3    Function Parameters: 
0:?     Sequence
0:3      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:3        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)


Linked fragment stage:


Shader version: 500
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 ( temp 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 ( temp float)
0:13        Construct float ( in float)
0:13          'f1b' ( temp 1-component vector of float)
0:15      Branch: Return with expression
0:15        Constant:
0:15          0.000000
0:15          0.000000
0:15          0.000000
0:15          0.000000
0:3  Function Definition: main( ( temp void)
0:3    Function Parameters: 
0:?     Sequence
0:3      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:3        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)

// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 31

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