hlsl.struct.split-1.vert
Shader version: 500
0:? Sequence
0:17  Function Definition: @main(struct-VS_INPUT-i1-vf4-i11;vf4; ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17    Function Parameters: 
0:17      'vsin' ( in structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:17      'Pos_loose' ( in 4-component vector of float)
0:?     Sequence
0:20      move second child to first child ( temp int)
0:20        x0_out: direct index for structure ( temp int)
0:20          'vsout' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:20          Constant:
0:20            0 (const int)
0:20        x0_in: direct index for structure ( temp int)
0:20          'vsin' ( in structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:20          Constant:
0:20            0 (const int)
0:21      move second child to first child ( temp 4-component vector of float)
0:21        Pos_out: direct index for structure ( temp 4-component vector of float)
0:21          'vsout' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:21          Constant:
0:21            1 (const int)
0:21        add ( temp 4-component vector of float)
0:21          Pos_in: direct index for structure ( temp 4-component vector of float)
0:21            'vsin' ( in structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:21            Constant:
0:21              1 (const int)
0:21          'Pos_loose' ( in 4-component vector of float)
0:22      move second child to first child ( temp int)
0:22        x1_out: direct index for structure ( temp int)
0:22          'vsout' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:22          Constant:
0:22            2 (const int)
0:22        x1_in: direct index for structure ( temp int)
0:22          'vsin' ( in structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:22          Constant:
0:22            2 (const int)
0:24      Branch: Return with expression
0:24        'vsout' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17  Function Definition: main( ( temp void)
0:17    Function Parameters: 
0:?     Sequence
0:17      Sequence
0:17        move second child to first child ( temp int)
0:17          x0_in: direct index for structure ( temp int)
0:?             'vsin' ( temp structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:17            Constant:
0:17              0 (const int)
0:?           'vsin.x0_in' (layout( location=0) in int)
0:17        move second child to first child ( temp 4-component vector of float)
0:17          Pos_in: direct index for structure ( temp 4-component vector of float)
0:?             'vsin' ( temp structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:17            Constant:
0:17              1 (const int)
0:?           'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
0:17        move second child to first child ( temp int)
0:17          x1_in: direct index for structure ( temp int)
0:?             'vsin' ( temp structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:17            Constant:
0:17              2 (const int)
0:?           'vsin.x1_in' (layout( location=2) in int)
0:17      move second child to first child ( temp 4-component vector of float)
0:?         'Pos_loose' ( temp 4-component vector of float)
0:?         'Pos_loose' (layout( location=3) in 4-component vector of float)
0:17      Sequence
0:17        move second child to first child ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17          'flattenTemp' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17          Function Call: @main(struct-VS_INPUT-i1-vf4-i11;vf4; ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:?             'vsin' ( temp structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:?             'Pos_loose' ( temp 4-component vector of float)
0:17        move second child to first child ( temp int)
0:?           '@entryPointOutput.x0_out' (layout( location=0) out int)
0:17          x0_out: direct index for structure ( temp int)
0:17            'flattenTemp' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17            Constant:
0:17              0 (const int)
0:17        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
0:17          Pos_out: direct index for structure ( temp 4-component vector of float)
0:17            'flattenTemp' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17            Constant:
0:17              1 (const int)
0:17        move second child to first child ( temp int)
0:?           '@entryPointOutput.x1_out' (layout( location=1) out int)
0:17          x1_out: direct index for structure ( temp int)
0:17            'flattenTemp' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17            Constant:
0:17              2 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
0:?     '@entryPointOutput.x0_out' (layout( location=0) out int)
0:?     '@entryPointOutput.x1_out' (layout( location=1) out int)
0:?     'vsin.x0_in' (layout( location=0) in int)
0:?     'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
0:?     'vsin.x1_in' (layout( location=2) in int)
0:?     'Pos_loose' (layout( location=3) in 4-component vector of float)


Linked vertex stage:


Shader version: 500
0:? Sequence
0:17  Function Definition: @main(struct-VS_INPUT-i1-vf4-i11;vf4; ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17    Function Parameters: 
0:17      'vsin' ( in structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:17      'Pos_loose' ( in 4-component vector of float)
0:?     Sequence
0:20      move second child to first child ( temp int)
0:20        x0_out: direct index for structure ( temp int)
0:20          'vsout' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:20          Constant:
0:20            0 (const int)
0:20        x0_in: direct index for structure ( temp int)
0:20          'vsin' ( in structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:20          Constant:
0:20            0 (const int)
0:21      move second child to first child ( temp 4-component vector of float)
0:21        Pos_out: direct index for structure ( temp 4-component vector of float)
0:21          'vsout' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:21          Constant:
0:21            1 (const int)
0:21        add ( temp 4-component vector of float)
0:21          Pos_in: direct index for structure ( temp 4-component vector of float)
0:21            'vsin' ( in structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:21            Constant:
0:21              1 (const int)
0:21          'Pos_loose' ( in 4-component vector of float)
0:22      move second child to first child ( temp int)
0:22        x1_out: direct index for structure ( temp int)
0:22          'vsout' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:22          Constant:
0:22            2 (const int)
0:22        x1_in: direct index for structure ( temp int)
0:22          'vsin' ( in structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:22          Constant:
0:22            2 (const int)
0:24      Branch: Return with expression
0:24        'vsout' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17  Function Definition: main( ( temp void)
0:17    Function Parameters: 
0:?     Sequence
0:17      Sequence
0:17        move second child to first child ( temp int)
0:17          x0_in: direct index for structure ( temp int)
0:?             'vsin' ( temp structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:17            Constant:
0:17              0 (const int)
0:?           'vsin.x0_in' (layout( location=0) in int)
0:17        move second child to first child ( temp 4-component vector of float)
0:17          Pos_in: direct index for structure ( temp 4-component vector of float)
0:?             'vsin' ( temp structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:17            Constant:
0:17              1 (const int)
0:?           'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
0:17        move second child to first child ( temp int)
0:17          x1_in: direct index for structure ( temp int)
0:?             'vsin' ( temp structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:17            Constant:
0:17              2 (const int)
0:?           'vsin.x1_in' (layout( location=2) in int)
0:17      move second child to first child ( temp 4-component vector of float)
0:?         'Pos_loose' ( temp 4-component vector of float)
0:?         'Pos_loose' (layout( location=3) in 4-component vector of float)
0:17      Sequence
0:17        move second child to first child ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17          'flattenTemp' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17          Function Call: @main(struct-VS_INPUT-i1-vf4-i11;vf4; ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:?             'vsin' ( temp structure{ temp int x0_in,  temp 4-component vector of float Pos_in,  temp int x1_in})
0:?             'Pos_loose' ( temp 4-component vector of float)
0:17        move second child to first child ( temp int)
0:?           '@entryPointOutput.x0_out' (layout( location=0) out int)
0:17          x0_out: direct index for structure ( temp int)
0:17            'flattenTemp' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17            Constant:
0:17              0 (const int)
0:17        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
0:17          Pos_out: direct index for structure ( temp 4-component vector of float)
0:17            'flattenTemp' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17            Constant:
0:17              1 (const int)
0:17        move second child to first child ( temp int)
0:?           '@entryPointOutput.x1_out' (layout( location=1) out int)
0:17          x1_out: direct index for structure ( temp int)
0:17            'flattenTemp' ( temp structure{ temp int x0_out,  temp 4-component vector of float Pos_out,  temp int x1_out})
0:17            Constant:
0:17              2 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
0:?     '@entryPointOutput.x0_out' (layout( location=0) out int)
0:?     '@entryPointOutput.x1_out' (layout( location=1) out int)
0:?     'vsin.x0_in' (layout( location=0) in int)
0:?     'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
0:?     'vsin.x1_in' (layout( location=2) in int)
0:?     'Pos_loose' (layout( location=3) in 4-component vector of float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 40 44 47 51 60 64 67
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "VS_INPUT"
                              MemberName 9(VS_INPUT) 0  "x0_in"
                              MemberName 9(VS_INPUT) 1  "Pos_in"
                              MemberName 9(VS_INPUT) 2  "x1_in"
                              Name 12  "VS_OUTPUT"
                              MemberName 12(VS_OUTPUT) 0  "x0_out"
                              MemberName 12(VS_OUTPUT) 1  "Pos_out"
                              MemberName 12(VS_OUTPUT) 2  "x1_out"
                              Name 16  "@main(struct-VS_INPUT-i1-vf4-i11;vf4;"
                              Name 14  "vsin"
                              Name 15  "Pos_loose"
                              Name 19  "vsout"
                              Name 38  "vsin"
                              Name 40  "vsin.x0_in"
                              Name 44  "vsin.Pos_in"
                              Name 47  "vsin.x1_in"
                              Name 50  "Pos_loose"
                              Name 51  "Pos_loose"
                              Name 53  "flattenTemp"
                              Name 54  "param"
                              Name 56  "param"
                              Name 60  "@entryPointOutput.x0_out"
                              Name 64  "@entryPointOutput.Pos_out"
                              Name 67  "@entryPointOutput.x1_out"
                              Decorate 40(vsin.x0_in) Location 0
                              Decorate 44(vsin.Pos_in) Location 1
                              Decorate 47(vsin.x1_in) Location 2
                              Decorate 51(Pos_loose) Location 3
                              Decorate 60(@entryPointOutput.x0_out) Location 0
                              Decorate 64(@entryPointOutput.Pos_out) BuiltIn Position
                              Decorate 67(@entryPointOutput.x1_out) Location 1
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypeFloat 32
               8:             TypeVector 7(float) 4
     9(VS_INPUT):             TypeStruct 6(int) 8(fvec4) 6(int)
              10:             TypePointer Function 9(VS_INPUT)
              11:             TypePointer Function 8(fvec4)
   12(VS_OUTPUT):             TypeStruct 6(int) 8(fvec4) 6(int)
              13:             TypeFunction 12(VS_OUTPUT) 10(ptr) 11(ptr)
              18:             TypePointer Function 12(VS_OUTPUT)
              20:      6(int) Constant 0
              21:             TypePointer Function 6(int)
              25:      6(int) Constant 1
              31:      6(int) Constant 2
              39:             TypePointer Input 6(int)
  40(vsin.x0_in):     39(ptr) Variable Input
              43:             TypePointer Input 8(fvec4)
 44(vsin.Pos_in):     43(ptr) Variable Input
  47(vsin.x1_in):     39(ptr) Variable Input
   51(Pos_loose):     43(ptr) Variable Input
              59:             TypePointer Output 6(int)
60(@entryPointOutput.x0_out):     59(ptr) Variable Output
              63:             TypePointer Output 8(fvec4)
64(@entryPointOutput.Pos_out):     63(ptr) Variable Output
67(@entryPointOutput.x1_out):     59(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
        38(vsin):     10(ptr) Variable Function
   50(Pos_loose):     11(ptr) Variable Function
 53(flattenTemp):     18(ptr) Variable Function
       54(param):     10(ptr) Variable Function
       56(param):     11(ptr) Variable Function
              41:      6(int) Load 40(vsin.x0_in)
              42:     21(ptr) AccessChain 38(vsin) 20
                              Store 42 41
              45:    8(fvec4) Load 44(vsin.Pos_in)
              46:     11(ptr) AccessChain 38(vsin) 25
                              Store 46 45
              48:      6(int) Load 47(vsin.x1_in)
              49:     21(ptr) AccessChain 38(vsin) 31
                              Store 49 48
              52:    8(fvec4) Load 51(Pos_loose)
                              Store 50(Pos_loose) 52
              55: 9(VS_INPUT) Load 38(vsin)
                              Store 54(param) 55
              57:    8(fvec4) Load 50(Pos_loose)
                              Store 56(param) 57
              58:12(VS_OUTPUT) FunctionCall 16(@main(struct-VS_INPUT-i1-vf4-i11;vf4;) 54(param) 56(param)
                              Store 53(flattenTemp) 58
              61:     21(ptr) AccessChain 53(flattenTemp) 20
              62:      6(int) Load 61
                              Store 60(@entryPointOutput.x0_out) 62
              65:     11(ptr) AccessChain 53(flattenTemp) 25
              66:    8(fvec4) Load 65
                              Store 64(@entryPointOutput.Pos_out) 66
              68:     21(ptr) AccessChain 53(flattenTemp) 31
              69:      6(int) Load 68
                              Store 67(@entryPointOutput.x1_out) 69
                              Return
                              FunctionEnd
16(@main(struct-VS_INPUT-i1-vf4-i11;vf4;):12(VS_OUTPUT) Function None 13
        14(vsin):     10(ptr) FunctionParameter
   15(Pos_loose):     11(ptr) FunctionParameter
              17:             Label
       19(vsout):     18(ptr) Variable Function
              22:     21(ptr) AccessChain 14(vsin) 20
              23:      6(int) Load 22
              24:     21(ptr) AccessChain 19(vsout) 20
                              Store 24 23
              26:     11(ptr) AccessChain 14(vsin) 25
              27:    8(fvec4) Load 26
              28:    8(fvec4) Load 15(Pos_loose)
              29:    8(fvec4) FAdd 27 28
              30:     11(ptr) AccessChain 19(vsout) 25
                              Store 30 29
              32:     21(ptr) AccessChain 14(vsin) 31
              33:      6(int) Load 32
              34:     21(ptr) AccessChain 19(vsout) 31
                              Store 34 33
              35:12(VS_OUTPUT) Load 19(vsout)
                              ReturnValue 35
                              FunctionEnd
