hlsl.synthesizeInput.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7  Function Definition: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
0:7    Function Parameters: 
0:7      'input' ( in structure{ temp float interp,  temp uint no_interp})
0:?     Sequence
0:8      Branch: Return with expression
0:?         Construct vec4 ( temp 4-component vector of float)
0:8          Convert uint to float ( temp float)
0:8            no_interp: direct index for structure ( temp uint)
0:8              'input' ( in structure{ temp float interp,  temp uint no_interp})
0:8              Constant:
0:8                1 (const int)
0:8          interp: direct index for structure ( temp float)
0:8            'input' ( in structure{ temp float interp,  temp uint no_interp})
0:8            Constant:
0:8              0 (const int)
0:8          Constant:
0:8            0.000000
0:8          Constant:
0:8            1.000000
0:7  Function Definition: main( ( temp void)
0:7    Function Parameters: 
0:?     Sequence
0:7      Sequence
0:7        move second child to first child ( temp float)
0:7          interp: direct index for structure ( temp float)
0:?             'input' ( temp structure{ temp float interp,  temp uint no_interp})
0:7            Constant:
0:7              0 (const int)
0:?           'input.interp' (layout( location=0) in float)
0:7        move second child to first child ( temp uint)
0:7          no_interp: direct index for structure ( temp uint)
0:?             'input' ( temp structure{ temp float interp,  temp uint no_interp})
0:7            Constant:
0:7              1 (const int)
0:?           'input.no_interp' (layout( location=1) flat in uint)
0:7      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7        Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
0:?           'input' ( temp structure{ temp float interp,  temp uint no_interp})
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'input.interp' (layout( location=0) in float)
0:?     'input.no_interp' (layout( location=1) flat in uint)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7  Function Definition: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
0:7    Function Parameters: 
0:7      'input' ( in structure{ temp float interp,  temp uint no_interp})
0:?     Sequence
0:8      Branch: Return with expression
0:?         Construct vec4 ( temp 4-component vector of float)
0:8          Convert uint to float ( temp float)
0:8            no_interp: direct index for structure ( temp uint)
0:8              'input' ( in structure{ temp float interp,  temp uint no_interp})
0:8              Constant:
0:8                1 (const int)
0:8          interp: direct index for structure ( temp float)
0:8            'input' ( in structure{ temp float interp,  temp uint no_interp})
0:8            Constant:
0:8              0 (const int)
0:8          Constant:
0:8            0.000000
0:8          Constant:
0:8            1.000000
0:7  Function Definition: main( ( temp void)
0:7    Function Parameters: 
0:?     Sequence
0:7      Sequence
0:7        move second child to first child ( temp float)
0:7          interp: direct index for structure ( temp float)
0:?             'input' ( temp structure{ temp float interp,  temp uint no_interp})
0:7            Constant:
0:7              0 (const int)
0:?           'input.interp' (layout( location=0) in float)
0:7        move second child to first child ( temp uint)
0:7          no_interp: direct index for structure ( temp uint)
0:?             'input' ( temp structure{ temp float interp,  temp uint no_interp})
0:7            Constant:
0:7              1 (const int)
0:?           'input.no_interp' (layout( location=1) flat in uint)
0:7      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7        Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
0:?           'input' ( temp structure{ temp float interp,  temp uint no_interp})
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'input.interp' (layout( location=0) in float)
0:?     'input.no_interp' (layout( location=1) flat in uint)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 32 36 40
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "PSInput"
                              MemberName 8(PSInput) 0  "interp"
                              MemberName 8(PSInput) 1  "no_interp"
                              Name 13  "@main(struct-PSInput-f1-u11;"
                              Name 12  "input"
                              Name 30  "input"
                              Name 32  "input.interp"
                              Name 36  "input.no_interp"
                              Name 40  "@entryPointOutput"
                              Name 41  "param"
                              Decorate 32(input.interp) Location 0
                              Decorate 36(input.no_interp) Flat
                              Decorate 36(input.no_interp) Location 1
                              Decorate 40(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeInt 32 0
      8(PSInput):             TypeStruct 6(float) 7(int)
               9:             TypePointer Function 8(PSInput)
              10:             TypeVector 6(float) 4
              11:             TypeFunction 10(fvec4) 9(ptr)
              15:             TypeInt 32 1
              16:     15(int) Constant 1
              17:             TypePointer Function 7(int)
              21:     15(int) Constant 0
              22:             TypePointer Function 6(float)
              25:    6(float) Constant 0
              26:    6(float) Constant 1065353216
              31:             TypePointer Input 6(float)
32(input.interp):     31(ptr) Variable Input
              35:             TypePointer Input 7(int)
36(input.no_interp):     35(ptr) Variable Input
              39:             TypePointer Output 10(fvec4)
40(@entryPointOutput):     39(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
       30(input):      9(ptr) Variable Function
       41(param):      9(ptr) Variable Function
              33:    6(float) Load 32(input.interp)
              34:     22(ptr) AccessChain 30(input) 21
                              Store 34 33
              37:      7(int) Load 36(input.no_interp)
              38:     17(ptr) AccessChain 30(input) 16
                              Store 38 37
              42:  8(PSInput) Load 30(input)
                              Store 41(param) 42
              43:   10(fvec4) FunctionCall 13(@main(struct-PSInput-f1-u11;) 41(param)
                              Store 40(@entryPointOutput) 43
                              Return
                              FunctionEnd
13(@main(struct-PSInput-f1-u11;):   10(fvec4) Function None 11
       12(input):      9(ptr) FunctionParameter
              14:             Label
              18:     17(ptr) AccessChain 12(input) 16
              19:      7(int) Load 18
              20:    6(float) ConvertUToF 19
              23:     22(ptr) AccessChain 12(input) 21
              24:    6(float) Load 23
              27:   10(fvec4) CompositeConstruct 20 24 25 26
                              ReturnValue 27
                              FunctionEnd
