hlsl.y-negate-3.vert
Shader version: 500
0:? Sequence
0:11  Function Definition: @main( ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11    Function Parameters: 
0:?     Sequence
0:14      move second child to first child ( temp 4-component vector of float)
0:14        pos: direct index for structure ( temp 4-component vector of float)
0:14          'vsout' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:14          Constant:
0:14            0 (const int)
0:14        position: direct index for structure ( uniform 4-component vector of float)
0:14          'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float position})
0:14          Constant:
0:14            0 (const uint)
0:15      move second child to first child ( temp int)
0:15        somethingelse: direct index for structure ( temp int)
0:15          'vsout' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:15          Constant:
0:15            1 (const int)
0:15        Constant:
0:15          42 (const int)
0:17      Branch: Return with expression
0:17        'vsout' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11  Function Definition: main( ( temp void)
0:11    Function Parameters: 
0:?     Sequence
0:11      Sequence
0:11        move second child to first child ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11          'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11          Function Call: @main( ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11        Sequence
0:11          move second child to first child ( temp 4-component vector of float)
0:11            '@position' ( temp 4-component vector of float)
0:11            pos: direct index for structure ( temp 4-component vector of float)
0:11              'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11              Constant:
0:11                0 (const int)
0:11          move second child to first child ( temp float)
0:11            direct index ( temp float)
0:11              '@position' ( temp 4-component vector of float)
0:11              Constant:
0:11                1 (const int)
0:11            Negate value ( temp float)
0:11              direct index ( temp float)
0:11                '@position' ( temp 4-component vector of float)
0:11                Constant:
0:11                  1 (const int)
0:11          move second child to first child ( temp 4-component vector of float)
0:?             '@entryPointOutput.pos' ( out 4-component vector of float Position)
0:11            '@position' ( temp 4-component vector of float)
0:11        move second child to first child ( temp int)
0:?           '@entryPointOutput.somethingelse' (layout( location=0) out int)
0:11          somethingelse: direct index for structure ( temp int)
0:11            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11            Constant:
0:11              1 (const int)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float position})
0:?     '@entryPointOutput.pos' ( out 4-component vector of float Position)
0:?     '@entryPointOutput.somethingelse' (layout( location=0) out int)


Linked vertex stage:


Shader version: 500
0:? Sequence
0:11  Function Definition: @main( ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11    Function Parameters: 
0:?     Sequence
0:14      move second child to first child ( temp 4-component vector of float)
0:14        pos: direct index for structure ( temp 4-component vector of float)
0:14          'vsout' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:14          Constant:
0:14            0 (const int)
0:14        position: direct index for structure ( uniform 4-component vector of float)
0:14          'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float position})
0:14          Constant:
0:14            0 (const uint)
0:15      move second child to first child ( temp int)
0:15        somethingelse: direct index for structure ( temp int)
0:15          'vsout' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:15          Constant:
0:15            1 (const int)
0:15        Constant:
0:15          42 (const int)
0:17      Branch: Return with expression
0:17        'vsout' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11  Function Definition: main( ( temp void)
0:11    Function Parameters: 
0:?     Sequence
0:11      Sequence
0:11        move second child to first child ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11          'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11          Function Call: @main( ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11        Sequence
0:11          move second child to first child ( temp 4-component vector of float)
0:11            '@position' ( temp 4-component vector of float)
0:11            pos: direct index for structure ( temp 4-component vector of float)
0:11              'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11              Constant:
0:11                0 (const int)
0:11          move second child to first child ( temp float)
0:11            direct index ( temp float)
0:11              '@position' ( temp 4-component vector of float)
0:11              Constant:
0:11                1 (const int)
0:11            Negate value ( temp float)
0:11              direct index ( temp float)
0:11                '@position' ( temp 4-component vector of float)
0:11                Constant:
0:11                  1 (const int)
0:11          move second child to first child ( temp 4-component vector of float)
0:?             '@entryPointOutput.pos' ( out 4-component vector of float Position)
0:11            '@position' ( temp 4-component vector of float)
0:11        move second child to first child ( temp int)
0:?           '@entryPointOutput.somethingelse' (layout( location=0) out int)
0:11          somethingelse: direct index for structure ( temp int)
0:11            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp int somethingelse})
0:11            Constant:
0:11              1 (const int)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float position})
0:?     '@entryPointOutput.pos' ( out 4-component vector of float Position)
0:?     '@entryPointOutput.somethingelse' (layout( location=0) out int)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 44 47
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "VS_OUT"
                              MemberName 9(VS_OUT) 0  "pos"
                              MemberName 9(VS_OUT) 1  "somethingelse"
                              Name 11  "@main("
                              Name 14  "vsout"
                              Name 16  "$Global"
                              MemberName 16($Global) 0  "position"
                              Name 18  ""
                              Name 31  "flattenTemp"
                              Name 33  "@position"
                              Name 44  "@entryPointOutput.pos"
                              Name 47  "@entryPointOutput.somethingelse"
                              MemberDecorate 16($Global) 0 Offset 0
                              Decorate 16($Global) Block
                              Decorate 18 DescriptorSet 0
                              Decorate 18 Binding 0
                              Decorate 44(@entryPointOutput.pos) BuiltIn Position
                              Decorate 47(@entryPointOutput.somethingelse) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeInt 32 1
       9(VS_OUT):             TypeStruct 7(fvec4) 8(int)
              10:             TypeFunction 9(VS_OUT)
              13:             TypePointer Function 9(VS_OUT)
              15:      8(int) Constant 0
     16($Global):             TypeStruct 7(fvec4)
              17:             TypePointer Uniform 16($Global)
              18:     17(ptr) Variable Uniform
              19:             TypePointer Uniform 7(fvec4)
              22:             TypePointer Function 7(fvec4)
              24:      8(int) Constant 1
              25:      8(int) Constant 42
              26:             TypePointer Function 8(int)
              36:             TypeInt 32 0
              37:     36(int) Constant 1
              38:             TypePointer Function 6(float)
              43:             TypePointer Output 7(fvec4)
44(@entryPointOutput.pos):     43(ptr) Variable Output
              46:             TypePointer Output 8(int)
47(@entryPointOutput.somethingelse):     46(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
 31(flattenTemp):     13(ptr) Variable Function
   33(@position):     22(ptr) Variable Function
              32:   9(VS_OUT) FunctionCall 11(@main()
                              Store 31(flattenTemp) 32
              34:     22(ptr) AccessChain 31(flattenTemp) 15
              35:    7(fvec4) Load 34
                              Store 33(@position) 35
              39:     38(ptr) AccessChain 33(@position) 37
              40:    6(float) Load 39
              41:    6(float) FNegate 40
              42:     38(ptr) AccessChain 33(@position) 37
                              Store 42 41
              45:    7(fvec4) Load 33(@position)
                              Store 44(@entryPointOutput.pos) 45
              48:     26(ptr) AccessChain 31(flattenTemp) 24
              49:      8(int) Load 48
                              Store 47(@entryPointOutput.somethingelse) 49
                              Return
                              FunctionEnd
      11(@main():   9(VS_OUT) Function None 10
              12:             Label
       14(vsout):     13(ptr) Variable Function
              20:     19(ptr) AccessChain 18 15
              21:    7(fvec4) Load 20
              23:     22(ptr) AccessChain 14(vsout) 15
                              Store 23 21
              27:     26(ptr) AccessChain 14(vsout) 24
                              Store 27 25
              28:   9(VS_OUT) Load 14(vsout)
                              ReturnValue 28
                              FunctionEnd
