hlsl.singleArgIntPromo.vert
Shader version: 500
0:? Sequence
0:2  Function Definition: @main( ( temp float)
0:2    Function Parameters: 
0:?     Sequence
0:3      Sequence
0:3        move second child to first child ( temp int)
0:3          'd' ( temp int)
0:3          Constant:
0:3            4 (const int)
0:4      Sequence
0:4        move second child to first child ( temp 2-component vector of int)
0:4          'd2' ( temp 2-component vector of int)
0:4          Construct ivec2 ( temp 2-component vector of int)
0:4            Constant:
0:4              5 (const int)
0:4            'd' ( temp int)
0:5      Sequence
0:5        move second child to first child ( temp float)
0:5          'f1' ( temp float)
0:5          Constant:
0:5            2.321928
0:6      Sequence
0:6        move second child to first child ( temp 2-component vector of float)
0:6          'f2' ( temp 2-component vector of float)
0:6          log ( temp 2-component vector of float)
0:6            Convert int to float ( temp 2-component vector of float)
0:6              'd2' ( temp 2-component vector of int)
0:7      Sequence
0:7        move second child to first child ( temp 3-component vector of float)
0:7          'f3' ( temp 3-component vector of float)
0:7          Constant:
0:7            1.945910
0:7            0.693147
0:7            1.098612
0:8      Sequence
0:8        move second child to first child ( temp 2-component vector of float)
0:8          'f22' ( temp 2-component vector of float)
0:8          Constant:
0:8            0.000000
0:8            0.000000
0:10      Sequence
0:10        move second child to first child ( temp int)
0:10          'a' ( temp int)
0:10          Constant:
0:10            5 (const int)
0:11      Sequence
0:11        move second child to first child ( temp mediump float)
0:11          'b' ( temp mediump float)
0:11          direct index ( temp mediump float)
0:11            unpackHalf2x16 ( temp mediump 2-component vector of float)
0:11              Convert int to uint ( temp mediump uint)
0:11                'a' ( temp mediump int)
0:11            Constant:
0:11              0 (const int)
0:12      multiply second child into first child ( temp mediump float)
0:12        'b' ( temp mediump float)
0:12        'b' ( temp mediump float)
0:13      Sequence
0:13        move second child to first child ( temp uint)
0:13          'c' ( temp uint)
0:13          packHalf2x16 ( temp uint)
0:13            Construct vec2 ( temp 2-component vector of float)
0:13              'b' ( temp mediump float)
0:13              Constant:
0:13                0.000000
0:15      Branch: Return with expression
0:15        add ( temp float)
0:15          add ( temp float)
0:15            add ( temp float)
0:15              add ( temp float)
0:15                'f1' ( temp float)
0:15                direct index ( temp float)
0:15                  'f2' ( temp 2-component vector of float)
0:15                  Constant:
0:15                    0 (const int)
0:15              direct index ( temp float)
0:15                'f3' ( temp 3-component vector of float)
0:15                Constant:
0:15                  2 (const int)
0:15            direct index ( temp float)
0:15              'f22' ( temp 2-component vector of float)
0:15              Constant:
0:15                1 (const int)
0:15          Convert uint to float ( temp float)
0:15            'c' ( temp uint)
0:2  Function Definition: main( ( temp void)
0:2    Function Parameters: 
0:?     Sequence
0:2      move second child to first child ( temp float)
0:?         '@entryPointOutput' (layout( location=0) out float)
0:2        Function Call: @main( ( temp float)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out float)


Linked vertex stage:


Shader version: 500
0:? Sequence
0:2  Function Definition: @main( ( temp float)
0:2    Function Parameters: 
0:?     Sequence
0:3      Sequence
0:3        move second child to first child ( temp int)
0:3          'd' ( temp int)
0:3          Constant:
0:3            4 (const int)
0:4      Sequence
0:4        move second child to first child ( temp 2-component vector of int)
0:4          'd2' ( temp 2-component vector of int)
0:4          Construct ivec2 ( temp 2-component vector of int)
0:4            Constant:
0:4              5 (const int)
0:4            'd' ( temp int)
0:5      Sequence
0:5        move second child to first child ( temp float)
0:5          'f1' ( temp float)
0:5          Constant:
0:5            2.321928
0:6      Sequence
0:6        move second child to first child ( temp 2-component vector of float)
0:6          'f2' ( temp 2-component vector of float)
0:6          log ( temp 2-component vector of float)
0:6            Convert int to float ( temp 2-component vector of float)
0:6              'd2' ( temp 2-component vector of int)
0:7      Sequence
0:7        move second child to first child ( temp 3-component vector of float)
0:7          'f3' ( temp 3-component vector of float)
0:7          Constant:
0:7            1.945910
0:7            0.693147
0:7            1.098612
0:8      Sequence
0:8        move second child to first child ( temp 2-component vector of float)
0:8          'f22' ( temp 2-component vector of float)
0:8          Constant:
0:8            0.000000
0:8            0.000000
0:10      Sequence
0:10        move second child to first child ( temp int)
0:10          'a' ( temp int)
0:10          Constant:
0:10            5 (const int)
0:11      Sequence
0:11        move second child to first child ( temp mediump float)
0:11          'b' ( temp mediump float)
0:11          direct index ( temp mediump float)
0:11            unpackHalf2x16 ( temp mediump 2-component vector of float)
0:11              Convert int to uint ( temp mediump uint)
0:11                'a' ( temp mediump int)
0:11            Constant:
0:11              0 (const int)
0:12      multiply second child into first child ( temp mediump float)
0:12        'b' ( temp mediump float)
0:12        'b' ( temp mediump float)
0:13      Sequence
0:13        move second child to first child ( temp uint)
0:13          'c' ( temp uint)
0:13          packHalf2x16 ( temp uint)
0:13            Construct vec2 ( temp 2-component vector of float)
0:13              'b' ( temp mediump float)
0:13              Constant:
0:13                0.000000
0:15      Branch: Return with expression
0:15        add ( temp float)
0:15          add ( temp float)
0:15            add ( temp float)
0:15              add ( temp float)
0:15                'f1' ( temp float)
0:15                direct index ( temp float)
0:15                  'f2' ( temp 2-component vector of float)
0:15                  Constant:
0:15                    0 (const int)
0:15              direct index ( temp float)
0:15                'f3' ( temp 3-component vector of float)
0:15                Constant:
0:15                  2 (const int)
0:15            direct index ( temp float)
0:15              'f22' ( temp 2-component vector of float)
0:15              Constant:
0:15                1 (const int)
0:15          Convert uint to float ( temp float)
0:15            'c' ( temp uint)
0:2  Function Definition: main( ( temp void)
0:2    Function Parameters: 
0:?     Sequence
0:2      move second child to first child ( temp float)
0:?         '@entryPointOutput' (layout( location=0) out float)
0:2        Function Call: @main( ( temp float)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 73
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "@main("
                              Name 12  "d"
                              Name 16  "d2"
                              Name 21  "f1"
                              Name 25  "f2"
                              Name 31  "f3"
                              Name 36  "f22"
                              Name 39  "a"
                              Name 40  "b"
                              Name 51  "c"
                              Name 73  "@entryPointOutput"
                              Decorate 40(b) RelaxedPrecision
                              Decorate 41 RelaxedPrecision
                              Decorate 43 RelaxedPrecision
                              Decorate 44 RelaxedPrecision
                              Decorate 46 RelaxedPrecision
                              Decorate 47 RelaxedPrecision
                              Decorate 48 RelaxedPrecision
                              Decorate 49 RelaxedPrecision
                              Decorate 52 RelaxedPrecision
                              Decorate 73(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeFunction 6(float)
              10:             TypeInt 32 1
              11:             TypePointer Function 10(int)
              13:     10(int) Constant 4
              14:             TypeVector 10(int) 2
              15:             TypePointer Function 14(ivec2)
              17:     10(int) Constant 5
              20:             TypePointer Function 6(float)
              22:    6(float) Constant 1075092088
              23:             TypeVector 6(float) 2
              24:             TypePointer Function 23(fvec2)
              29:             TypeVector 6(float) 3
              30:             TypePointer Function 29(fvec3)
              32:    6(float) Constant 1073288085
              33:    6(float) Constant 1060205080
              34:    6(float) Constant 1066180436
              35:   29(fvec3) ConstantComposite 32 33 34
              37:    6(float) Constant 0
              38:   23(fvec2) ConstantComposite 37 37
              42:             TypeInt 32 0
              45:     42(int) Constant 0
              50:             TypePointer Function 42(int)
              59:     42(int) Constant 2
              63:     42(int) Constant 1
              72:             TypePointer Output 6(float)
73(@entryPointOutput):     72(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              74:    6(float) FunctionCall 8(@main()
                              Store 73(@entryPointOutput) 74
                              Return
                              FunctionEnd
       8(@main():    6(float) Function None 7
               9:             Label
           12(d):     11(ptr) Variable Function
          16(d2):     15(ptr) Variable Function
          21(f1):     20(ptr) Variable Function
          25(f2):     24(ptr) Variable Function
          31(f3):     30(ptr) Variable Function
         36(f22):     24(ptr) Variable Function
           39(a):     11(ptr) Variable Function
           40(b):     20(ptr) Variable Function
           51(c):     50(ptr) Variable Function
                              Store 12(d) 13
              18:     10(int) Load 12(d)
              19:   14(ivec2) CompositeConstruct 17 18
                              Store 16(d2) 19
                              Store 21(f1) 22
              26:   14(ivec2) Load 16(d2)
              27:   23(fvec2) ConvertSToF 26
              28:   23(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 27
                              Store 25(f2) 28
                              Store 31(f3) 35
                              Store 36(f22) 38
                              Store 39(a) 17
              41:     10(int) Load 39(a)
              43:     42(int) Bitcast 41
              44:   23(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 43
              46:    6(float) CompositeExtract 44 0
                              Store 40(b) 46
              47:    6(float) Load 40(b)
              48:    6(float) Load 40(b)
              49:    6(float) FMul 48 47
                              Store 40(b) 49
              52:    6(float) Load 40(b)
              53:   23(fvec2) CompositeConstruct 52 37
              54:     42(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 53
                              Store 51(c) 54
              55:    6(float) Load 21(f1)
              56:     20(ptr) AccessChain 25(f2) 45
              57:    6(float) Load 56
              58:    6(float) FAdd 55 57
              60:     20(ptr) AccessChain 31(f3) 59
              61:    6(float) Load 60
              62:    6(float) FAdd 58 61
              64:     20(ptr) AccessChain 36(f22) 63
              65:    6(float) Load 64
              66:    6(float) FAdd 62 65
              67:     42(int) Load 51(c)
              68:    6(float) ConvertUToF 67
              69:    6(float) FAdd 66 68
                              ReturnValue 69
                              FunctionEnd
