hlsl.struct.split.trivial.geom
Shader version: 500
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:14  Function Definition: @main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41; ( temp void)
0:14    Function Parameters: 
0:14      'i' ( in 3-element array of structure{ temp 4-component vector of float pos})
0:14      'ts' ( out structure{ temp 4-component vector of float pos})
0:?     Sequence
0:17      Sequence
0:17        move second child to first child ( temp int)
0:17          'x' ( temp int)
0:17          Constant:
0:17            0 (const int)
0:17        Loop with condition tested first
0:17          Loop Condition
0:17          Compare Less Than ( temp bool)
0:17            'x' ( temp int)
0:17            Constant:
0:17              3 (const int)
0:17          Loop Body
0:?           Sequence
0:18            move second child to first child ( temp 4-component vector of float)
0:18              pos: direct index for structure ( temp 4-component vector of float)
0:18                'o' ( temp structure{ temp 4-component vector of float pos})
0:18                Constant:
0:18                  0 (const int)
0:18              pos: direct index for structure ( temp 4-component vector of float)
0:18                indirect index ( temp structure{ temp 4-component vector of float pos})
0:18                  'i' ( in 3-element array of structure{ temp 4-component vector of float pos})
0:18                  'x' ( temp int)
0:18                Constant:
0:18                  0 (const int)
0:19            Sequence
0:19              Sequence
0:19                move second child to first child ( temp 4-component vector of float)
0:?                   'ts_pos' ( out 4-component vector of float Position)
0:19                  pos: direct index for structure ( temp 4-component vector of float)
0:19                    'o' ( temp structure{ temp 4-component vector of float pos})
0:19                    Constant:
0:19                      0 (const int)
0:19              EmitVertex ( temp void)
0:17          Loop Terminal Expression
0:17          Pre-Increment ( temp int)
0:17            'x' ( temp int)
0:14  Function Definition: main( ( temp void)
0:14    Function Parameters: 
0:?     Sequence
0:14      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            direct index ( temp structure{ temp 4-component vector of float pos})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos})
0:14              Constant:
0:14                0 (const int)
0:14            Constant:
0:14              0 (const int)
0:14          direct index ( in 4-component vector of float Position)
0:?             'i_pos' ( in 3-element array of 4-component vector of float Position)
0:14            Constant:
0:14              0 (const int)
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            direct index ( temp structure{ temp 4-component vector of float pos})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos})
0:14              Constant:
0:14                1 (const int)
0:14            Constant:
0:14              0 (const int)
0:14          direct index ( in 4-component vector of float Position)
0:?             'i_pos' ( in 3-element array of 4-component vector of float Position)
0:14            Constant:
0:14              1 (const int)
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            direct index ( temp structure{ temp 4-component vector of float pos})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos})
0:14              Constant:
0:14                2 (const int)
0:14            Constant:
0:14              0 (const int)
0:14          direct index ( in 4-component vector of float Position)
0:?             'i_pos' ( in 3-element array of 4-component vector of float Position)
0:14            Constant:
0:14              2 (const int)
0:14      Function Call: @main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41; ( temp void)
0:?         'i' ( temp 3-element array of structure{ temp 4-component vector of float pos})
0:?         'ts' ( temp structure{ temp 4-component vector of float pos})
0:?   Linker Objects
0:?     'i' (layout( location=0) in 3-element array of structure{})
0:?     'ts' (layout( location=0) out structure{})


Linked geometry stage:


Shader version: 500
invocations = 1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:14  Function Definition: @main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41; ( temp void)
0:14    Function Parameters: 
0:14      'i' ( in 3-element array of structure{ temp 4-component vector of float pos})
0:14      'ts' ( out structure{ temp 4-component vector of float pos})
0:?     Sequence
0:17      Sequence
0:17        move second child to first child ( temp int)
0:17          'x' ( temp int)
0:17          Constant:
0:17            0 (const int)
0:17        Loop with condition tested first
0:17          Loop Condition
0:17          Compare Less Than ( temp bool)
0:17            'x' ( temp int)
0:17            Constant:
0:17              3 (const int)
0:17          Loop Body
0:?           Sequence
0:18            move second child to first child ( temp 4-component vector of float)
0:18              pos: direct index for structure ( temp 4-component vector of float)
0:18                'o' ( temp structure{ temp 4-component vector of float pos})
0:18                Constant:
0:18                  0 (const int)
0:18              pos: direct index for structure ( temp 4-component vector of float)
0:18                indirect index ( temp structure{ temp 4-component vector of float pos})
0:18                  'i' ( in 3-element array of structure{ temp 4-component vector of float pos})
0:18                  'x' ( temp int)
0:18                Constant:
0:18                  0 (const int)
0:19            Sequence
0:19              Sequence
0:19                move second child to first child ( temp 4-component vector of float)
0:?                   'ts_pos' ( out 4-component vector of float Position)
0:19                  pos: direct index for structure ( temp 4-component vector of float)
0:19                    'o' ( temp structure{ temp 4-component vector of float pos})
0:19                    Constant:
0:19                      0 (const int)
0:19              EmitVertex ( temp void)
0:17          Loop Terminal Expression
0:17          Pre-Increment ( temp int)
0:17            'x' ( temp int)
0:14  Function Definition: main( ( temp void)
0:14    Function Parameters: 
0:?     Sequence
0:14      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            direct index ( temp structure{ temp 4-component vector of float pos})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos})
0:14              Constant:
0:14                0 (const int)
0:14            Constant:
0:14              0 (const int)
0:14          direct index ( in 4-component vector of float Position)
0:?             'i_pos' ( in 3-element array of 4-component vector of float Position)
0:14            Constant:
0:14              0 (const int)
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            direct index ( temp structure{ temp 4-component vector of float pos})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos})
0:14              Constant:
0:14                1 (const int)
0:14            Constant:
0:14              0 (const int)
0:14          direct index ( in 4-component vector of float Position)
0:?             'i_pos' ( in 3-element array of 4-component vector of float Position)
0:14            Constant:
0:14              1 (const int)
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            direct index ( temp structure{ temp 4-component vector of float pos})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos})
0:14              Constant:
0:14                2 (const int)
0:14            Constant:
0:14              0 (const int)
0:14          direct index ( in 4-component vector of float Position)
0:?             'i_pos' ( in 3-element array of 4-component vector of float Position)
0:14            Constant:
0:14              2 (const int)
0:14      Function Call: @main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41; ( temp void)
0:?         'i' ( temp 3-element array of structure{ temp 4-component vector of float pos})
0:?         'ts' ( temp structure{ temp 4-component vector of float pos})
0:?   Linker Objects
0:?     'i' (layout( location=0) in 3-element array of structure{})
0:?     'ts' (layout( location=0) out structure{})

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

                              Capability Geometry
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Geometry 4  "main" 40 49 70 73
                              ExecutionMode 4 Triangles
                              ExecutionMode 4 Invocations 1
                              ExecutionMode 4 OutputTriangleStrip
                              ExecutionMode 4 OutputVertices 3
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "PS_IN"
                              MemberName 8(PS_IN) 0  "pos"
                              Name 13  "GS_OUT"
                              MemberName 13(GS_OUT) 0  "pos"
                              Name 18  "@main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41;"
                              Name 16  "i"
                              Name 17  "ts"
                              Name 22  "x"
                              Name 33  "o"
                              Name 40  "ts_pos"
                              Name 46  "i"
                              Name 49  "i_pos"
                              Name 61  "ts"
                              Name 62  "param"
                              Name 64  "param"
                              Name 67  "PS_IN"
                              Name 70  "i"
                              Name 71  "GS_OUT"
                              Name 73  "ts"
                              Decorate 40(ts_pos) BuiltIn Position
                              Decorate 49(i_pos) BuiltIn Position
                              Decorate 70(i) Location 0
                              Decorate 73(ts) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
        8(PS_IN):             TypeStruct 7(fvec4)
               9:             TypeInt 32 0
              10:      9(int) Constant 3
              11:             TypeArray 8(PS_IN) 10
              12:             TypePointer Function 11
      13(GS_OUT):             TypeStruct 7(fvec4)
              14:             TypePointer Function 13(GS_OUT)
              15:             TypeFunction 2 12(ptr) 14(ptr)
              20:             TypeInt 32 1
              21:             TypePointer Function 20(int)
              23:     20(int) Constant 0
              30:     20(int) Constant 3
              31:             TypeBool
              35:             TypePointer Function 7(fvec4)
              39:             TypePointer Output 7(fvec4)
      40(ts_pos):     39(ptr) Variable Output
              44:     20(int) Constant 1
              47:             TypeArray 7(fvec4) 10
              48:             TypePointer Input 47
       49(i_pos):     48(ptr) Variable Input
              50:             TypePointer Input 7(fvec4)
              57:     20(int) Constant 2
       67(PS_IN):             TypeStruct
              68:             TypeArray 67(PS_IN) 10
              69:             TypePointer Input 68
           70(i):     69(ptr) Variable Input
      71(GS_OUT):             TypeStruct
              72:             TypePointer Output 71(GS_OUT)
          73(ts):     72(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
           46(i):     12(ptr) Variable Function
          61(ts):     14(ptr) Variable Function
       62(param):     12(ptr) Variable Function
       64(param):     14(ptr) Variable Function
              51:     50(ptr) AccessChain 49(i_pos) 23
              52:    7(fvec4) Load 51
              53:     35(ptr) AccessChain 46(i) 23 23
                              Store 53 52
              54:     50(ptr) AccessChain 49(i_pos) 44
              55:    7(fvec4) Load 54
              56:     35(ptr) AccessChain 46(i) 44 23
                              Store 56 55
              58:     50(ptr) AccessChain 49(i_pos) 57
              59:    7(fvec4) Load 58
              60:     35(ptr) AccessChain 46(i) 57 23
                              Store 60 59
              63:          11 Load 46(i)
                              Store 62(param) 63
              65:           2 FunctionCall 18(@main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41;) 62(param) 64(param)
              66:  13(GS_OUT) Load 64(param)
                              Store 61(ts) 66
                              Return
                              FunctionEnd
18(@main(struct-PS_IN-vf41[3];struct-GS_OUT-vf41;):           2 Function None 15
           16(i):     12(ptr) FunctionParameter
          17(ts):     14(ptr) FunctionParameter
              19:             Label
           22(x):     21(ptr) Variable Function
           33(o):     14(ptr) Variable Function
                              Store 22(x) 23
                              Branch 24
              24:             Label
                              LoopMerge 26 27 None
                              Branch 28
              28:             Label
              29:     20(int) Load 22(x)
              32:    31(bool) SLessThan 29 30
                              BranchConditional 32 25 26
              25:               Label
              34:     20(int)   Load 22(x)
              36:     35(ptr)   AccessChain 16(i) 34 23
              37:    7(fvec4)   Load 36
              38:     35(ptr)   AccessChain 33(o) 23
                                Store 38 37
              41:     35(ptr)   AccessChain 33(o) 23
              42:    7(fvec4)   Load 41
                                Store 40(ts_pos) 42
                                EmitVertex
                                Branch 27
              27:               Label
              43:     20(int)   Load 22(x)
              45:     20(int)   IAdd 43 44
                                Store 22(x) 45
                                Branch 24
              26:             Label
                              Return
                              FunctionEnd
