hlsl.nonint-index.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4  Function Definition: @main(f1; ( temp float)
0:4    Function Parameters: 
0:4      'input' ( in float)
0:?     Sequence
0:7      Branch: Return with expression
0:7        add ( temp float)
0:7          add ( temp float)
0:7            add ( temp float)
0:7              indirect index ( temp float)
0:7                Constant:
0:7                  1.000000
0:7                  2.000000
0:7                  3.000000
0:7                Convert float to uint ( temp uint)
0:7                  'input' ( in float)
0:7              Constant:
0:7                3.000000
0:7            Constant:
0:7              2.000000
0:7          Constant:
0:7            1.000000
0:4  Function Definition: main( ( temp void)
0:4    Function Parameters: 
0:?     Sequence
0:4      move second child to first child ( temp float)
0:?         'input' ( temp float)
0:?         'input' (layout( location=0) in float)
0:4      move second child to first child ( temp float)
0:?         '@entryPointOutput' (layout( location=0) out float)
0:4        Function Call: @main(f1; ( temp float)
0:?           'input' ( temp float)
0:?   Linker Objects
0:?     'array' ( const 3-element array of float)
0:?       1.000000
0:?       2.000000
0:?       3.000000
0:?     '@entryPointOutput' (layout( location=0) out float)
0:?     'input' (layout( location=0) in float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:4  Function Definition: @main(f1; ( temp float)
0:4    Function Parameters: 
0:4      'input' ( in float)
0:?     Sequence
0:7      Branch: Return with expression
0:7        add ( temp float)
0:7          add ( temp float)
0:7            add ( temp float)
0:7              indirect index ( temp float)
0:7                Constant:
0:7                  1.000000
0:7                  2.000000
0:7                  3.000000
0:7                Convert float to uint ( temp uint)
0:7                  'input' ( in float)
0:7              Constant:
0:7                3.000000
0:7            Constant:
0:7              2.000000
0:7          Constant:
0:7            1.000000
0:4  Function Definition: main( ( temp void)
0:4    Function Parameters: 
0:?     Sequence
0:4      move second child to first child ( temp float)
0:?         'input' ( temp float)
0:?         'input' (layout( location=0) in float)
0:4      move second child to first child ( temp float)
0:?         '@entryPointOutput' (layout( location=0) out float)
0:4        Function Call: @main(f1; ( temp float)
0:?           'input' ( temp float)
0:?   Linker Objects
0:?     'array' ( const 3-element array of float)
0:?       1.000000
0:?       2.000000
0:?       3.000000
0:?     '@entryPointOutput' (layout( location=0) out float)
0:?     'input' (layout( location=0) in float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 32 35
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 10  "@main(f1;"
                              Name 9  "input"
                              Name 22  "indexable"
                              Name 30  "input"
                              Name 32  "input"
                              Name 35  "@entryPointOutput"
                              Name 36  "param"
                              Decorate 32(input) Location 0
                              Decorate 35(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               8:             TypeFunction 6(float) 7(ptr)
              12:             TypeInt 32 0
              13:     12(int) Constant 3
              14:             TypeArray 6(float) 13
              15:    6(float) Constant 1065353216
              16:    6(float) Constant 1073741824
              17:    6(float) Constant 1077936128
              18:          14 ConstantComposite 15 16 17
              21:             TypePointer Function 14
              31:             TypePointer Input 6(float)
       32(input):     31(ptr) Variable Input
              34:             TypePointer Output 6(float)
35(@entryPointOutput):     34(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
       30(input):      7(ptr) Variable Function
       36(param):      7(ptr) Variable Function
              33:    6(float) Load 32(input)
                              Store 30(input) 33
              37:    6(float) Load 30(input)
                              Store 36(param) 37
              38:    6(float) FunctionCall 10(@main(f1;) 36(param)
                              Store 35(@entryPointOutput) 38
                              Return
                              FunctionEnd
   10(@main(f1;):    6(float) Function None 8
        9(input):      7(ptr) FunctionParameter
              11:             Label
   22(indexable):     21(ptr) Variable Function
              19:    6(float) Load 9(input)
              20:     12(int) ConvertFToU 19
                              Store 22(indexable) 18
              23:      7(ptr) AccessChain 22(indexable) 20
              24:    6(float) Load 23
              25:    6(float) FAdd 24 17
              26:    6(float) FAdd 25 16
              27:    6(float) FAdd 26 15
                              ReturnValue 27
                              FunctionEnd
