hlsl.y-negate-2.vert
Shader version: 500
0:? Sequence
0:6  Function Definition: @main(vf4; ( temp void)
0:6    Function Parameters: 
0:6      'position' ( out 4-component vector of float)
0:?     Sequence
0:7      move second child to first child ( temp 4-component vector of float)
0:7        'position' ( out 4-component vector of float)
0:7        pos: direct index for structure ( uniform 4-component vector of float)
0:7          'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float pos})
0:7          Constant:
0:7            0 (const uint)
0:6  Function Definition: main( ( temp void)
0:6    Function Parameters: 
0:?     Sequence
0:6      Function Call: @main(vf4; ( temp void)
0:?         'position' ( temp 4-component vector of float)
0:6      Sequence
0:6        move second child to first child ( temp 4-component vector of float)
0:6          '@position' ( temp 4-component vector of float)
0:?           'position' ( temp 4-component vector of float)
0:6        move second child to first child ( temp float)
0:6          direct index ( temp float)
0:6            '@position' ( temp 4-component vector of float)
0:6            Constant:
0:6              1 (const int)
0:6          Negate value ( temp float)
0:6            direct index ( temp float)
0:6              '@position' ( temp 4-component vector of float)
0:6              Constant:
0:6                1 (const int)
0:6        move second child to first child ( temp 4-component vector of float)
0:?           'position' ( out 4-component vector of float Position)
0:6          '@position' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float pos})
0:?     'position' ( out 4-component vector of float Position)


Linked vertex stage:


Shader version: 500
0:? Sequence
0:6  Function Definition: @main(vf4; ( temp void)
0:6    Function Parameters: 
0:6      'position' ( out 4-component vector of float)
0:?     Sequence
0:7      move second child to first child ( temp 4-component vector of float)
0:7        'position' ( out 4-component vector of float)
0:7        pos: direct index for structure ( uniform 4-component vector of float)
0:7          'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float pos})
0:7          Constant:
0:7            0 (const uint)
0:6  Function Definition: main( ( temp void)
0:6    Function Parameters: 
0:?     Sequence
0:6      Function Call: @main(vf4; ( temp void)
0:?         'position' ( temp 4-component vector of float)
0:6      Sequence
0:6        move second child to first child ( temp 4-component vector of float)
0:6          '@position' ( temp 4-component vector of float)
0:?           'position' ( temp 4-component vector of float)
0:6        move second child to first child ( temp float)
0:6          direct index ( temp float)
0:6            '@position' ( temp 4-component vector of float)
0:6            Constant:
0:6              1 (const int)
0:6          Negate value ( temp float)
0:6            direct index ( temp float)
0:6              '@position' ( temp 4-component vector of float)
0:6              Constant:
0:6                1 (const int)
0:6        move second child to first child ( temp 4-component vector of float)
0:?           'position' ( out 4-component vector of float Position)
0:6          '@position' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float pos})
0:?     'position' ( out 4-component vector of float Position)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 35
                              Source HLSL 500
                              Name 4  "main"
                              Name 11  "@main(vf4;"
                              Name 10  "position"
                              Name 13  "$Global"
                              MemberName 13($Global) 0  "pos"
                              Name 15  ""
                              Name 21  "position"
                              Name 22  "param"
                              Name 25  "@position"
                              Name 35  "position"
                              MemberDecorate 13($Global) 0 Offset 0
                              Decorate 13($Global) Block
                              Decorate 15 DescriptorSet 0
                              Decorate 15 Binding 0
                              Decorate 35(position) BuiltIn Position
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
               9:             TypeFunction 2 8(ptr)
     13($Global):             TypeStruct 7(fvec4)
              14:             TypePointer Uniform 13($Global)
              15:     14(ptr) Variable Uniform
              16:             TypeInt 32 1
              17:     16(int) Constant 0
              18:             TypePointer Uniform 7(fvec4)
              27:             TypeInt 32 0
              28:     27(int) Constant 1
              29:             TypePointer Function 6(float)
              34:             TypePointer Output 7(fvec4)
    35(position):     34(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
    21(position):      8(ptr) Variable Function
       22(param):      8(ptr) Variable Function
   25(@position):      8(ptr) Variable Function
              23:           2 FunctionCall 11(@main(vf4;) 22(param)
              24:    7(fvec4) Load 22(param)
                              Store 21(position) 24
              26:    7(fvec4) Load 21(position)
                              Store 25(@position) 26
              30:     29(ptr) AccessChain 25(@position) 28
              31:    6(float) Load 30
              32:    6(float) FNegate 31
              33:     29(ptr) AccessChain 25(@position) 28
                              Store 33 32
              36:    7(fvec4) Load 25(@position)
                              Store 35(position) 36
                              Return
                              FunctionEnd
  11(@main(vf4;):           2 Function None 9
    10(position):      8(ptr) FunctionParameter
              12:             Label
              19:     18(ptr) AccessChain 15 17
              20:    7(fvec4) Load 19
                              Store 10(position) 20
                              Return
                              FunctionEnd
