hlsl.struct.split.nested.geom
Shader version: 500
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:24  Function Definition: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void)
0:24    Function Parameters: 
0:24      'tin' ( in 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24      'ts' ( out structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:?     Sequence
0:27      move second child to first child ( temp 4-component vector of float)
0:27        pos: direct index for structure ( temp 4-component vector of float)
0:27          psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:27            'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:27            Constant:
0:27              0 (const int)
0:27          Constant:
0:27            0 (const int)
0:27        Constant:
0:27          1.000000
0:27          2.000000
0:27          3.000000
0:27          4.000000
0:28      move second child to first child ( temp 2-component vector of float)
0:28        tc: direct index for structure ( temp 2-component vector of float)
0:28          psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:28            'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:28            Constant:
0:28              0 (const int)
0:28          Constant:
0:28            1 (const int)
0:28        Constant:
0:28          5.000000
0:28          6.000000
0:29      move second child to first child ( temp float)
0:29        direct index ( temp float)
0:29          m0_array: direct index for structure ( temp 2-element array of float)
0:29            contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:29              'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:29              Constant:
0:29                1 (const int)
0:29            Constant:
0:29              0 (const int)
0:29          Constant:
0:29            0 (const int)
0:29        Constant:
0:29          2.300000
0:30      move second child to first child ( temp float)
0:30        direct index ( temp float)
0:30          m0_array: direct index for structure ( temp 2-element array of float)
0:30            contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:30              'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:30              Constant:
0:30                1 (const int)
0:30            Constant:
0:30              0 (const int)
0:30          Constant:
0:30            1 (const int)
0:30        Constant:
0:30          2.300000
0:31      move second child to first child ( temp int)
0:31        m1: direct index for structure ( temp int)
0:31          contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:31            'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:31            Constant:
0:31              1 (const int)
0:31          Constant:
0:31            1 (const int)
0:31        Constant:
0:31          2 (const int)
0:33      Sequence
0:33        Sequence
0:33          move second child to first child ( temp 4-component vector of float)
0:?             'ts.pos' ( out 4-component vector of float Position)
0:33            pos: direct index for structure ( temp 4-component vector of float)
0:33              psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:33                'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:33                Constant:
0:33                  0 (const int)
0:33              Constant:
0:33                0 (const int)
0:33          move second child to first child ( temp 2-component vector of float)
0:?             'ts.psIn.tc' (layout( location=0) out 2-component vector of float)
0:33            tc: direct index for structure ( temp 2-component vector of float)
0:33              psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:33                'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:33                Constant:
0:33                  0 (const int)
0:33              Constant:
0:33                1 (const int)
0:33          move second child to first child ( temp float)
0:?             'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float)
0:33            direct index ( temp float)
0:33              m0_array: direct index for structure ( temp 2-element array of float)
0:33                contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:33                  'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:33                  Constant:
0:33                    1 (const int)
0:33                Constant:
0:33                  0 (const int)
0:33              Constant:
0:33                0 (const int)
0:33          move second child to first child ( temp float)
0:?             'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float)
0:33            direct index ( temp float)
0:33              m0_array: direct index for structure ( temp 2-element array of float)
0:33                contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:33                  'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:33                  Constant:
0:33                    1 (const int)
0:33                Constant:
0:33                  0 (const int)
0:33              Constant:
0:33                1 (const int)
0:33          move second child to first child ( temp int)
0:?             'ts.contains_no_builtin_io.m1' (layout( location=3) out int)
0:33            m1: direct index for structure ( temp int)
0:33              contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:33                'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:33                Constant:
0:33                  1 (const int)
0:33              Constant:
0:33                1 (const int)
0:33        EmitVertex ( temp void)
0:24  Function Definition: main( ( temp void)
0:24    Function Parameters: 
0:?     Sequence
0:24      Sequence
0:24        move second child to first child ( temp 4-component vector of float)
0:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index ( in 4-component vector of float Position)
0:?             'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24            Constant:
0:24              0 (const int)
0:24        move second child to first child ( temp 2-component vector of float)
0:24          tc: direct index for structure ( temp 2-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index (layout( location=0) in 2-component vector of float)
0:?             'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24            Constant:
0:24              0 (const int)
0:24        move second child to first child ( temp 4-component vector of float)
0:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                1 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index ( in 4-component vector of float Position)
0:?             'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24            Constant:
0:24              1 (const int)
0:24        move second child to first child ( temp 2-component vector of float)
0:24          tc: direct index for structure ( temp 2-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                1 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index (layout( location=0) in 2-component vector of float)
0:?             'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24            Constant:
0:24              1 (const int)
0:24        move second child to first child ( temp 4-component vector of float)
0:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                2 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index ( in 4-component vector of float Position)
0:?             'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24            Constant:
0:24              2 (const int)
0:24        move second child to first child ( temp 2-component vector of float)
0:24          tc: direct index for structure ( temp 2-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                2 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index (layout( location=0) in 2-component vector of float)
0:?             'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24            Constant:
0:24              2 (const int)
0:24      Function Call: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void)
0:?         'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?         'ts' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:?   Linker Objects
0:?     'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:?     'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:?     'ts.pos' ( out 4-component vector of float Position)
0:?     'ts.psIn.tc' (layout( location=0) out 2-component vector of float)
0:?     'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float)
0:?     'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float)
0:?     'ts.contains_no_builtin_io.m1' (layout( location=3) out int)


Linked geometry stage:


Shader version: 500
invocations = 1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:24  Function Definition: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void)
0:24    Function Parameters: 
0:24      'tin' ( in 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24      'ts' ( out structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:?     Sequence
0:27      move second child to first child ( temp 4-component vector of float)
0:27        pos: direct index for structure ( temp 4-component vector of float)
0:27          psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:27            'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:27            Constant:
0:27              0 (const int)
0:27          Constant:
0:27            0 (const int)
0:27        Constant:
0:27          1.000000
0:27          2.000000
0:27          3.000000
0:27          4.000000
0:28      move second child to first child ( temp 2-component vector of float)
0:28        tc: direct index for structure ( temp 2-component vector of float)
0:28          psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:28            'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:28            Constant:
0:28              0 (const int)
0:28          Constant:
0:28            1 (const int)
0:28        Constant:
0:28          5.000000
0:28          6.000000
0:29      move second child to first child ( temp float)
0:29        direct index ( temp float)
0:29          m0_array: direct index for structure ( temp 2-element array of float)
0:29            contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:29              'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:29              Constant:
0:29                1 (const int)
0:29            Constant:
0:29              0 (const int)
0:29          Constant:
0:29            0 (const int)
0:29        Constant:
0:29          2.300000
0:30      move second child to first child ( temp float)
0:30        direct index ( temp float)
0:30          m0_array: direct index for structure ( temp 2-element array of float)
0:30            contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:30              'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:30              Constant:
0:30                1 (const int)
0:30            Constant:
0:30              0 (const int)
0:30          Constant:
0:30            1 (const int)
0:30        Constant:
0:30          2.300000
0:31      move second child to first child ( temp int)
0:31        m1: direct index for structure ( temp int)
0:31          contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:31            'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:31            Constant:
0:31              1 (const int)
0:31          Constant:
0:31            1 (const int)
0:31        Constant:
0:31          2 (const int)
0:33      Sequence
0:33        Sequence
0:33          move second child to first child ( temp 4-component vector of float)
0:?             'ts.pos' ( out 4-component vector of float Position)
0:33            pos: direct index for structure ( temp 4-component vector of float)
0:33              psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:33                'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:33                Constant:
0:33                  0 (const int)
0:33              Constant:
0:33                0 (const int)
0:33          move second child to first child ( temp 2-component vector of float)
0:?             'ts.psIn.tc' (layout( location=0) out 2-component vector of float)
0:33            tc: direct index for structure ( temp 2-component vector of float)
0:33              psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:33                'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:33                Constant:
0:33                  0 (const int)
0:33              Constant:
0:33                1 (const int)
0:33          move second child to first child ( temp float)
0:?             'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float)
0:33            direct index ( temp float)
0:33              m0_array: direct index for structure ( temp 2-element array of float)
0:33                contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:33                  'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:33                  Constant:
0:33                    1 (const int)
0:33                Constant:
0:33                  0 (const int)
0:33              Constant:
0:33                0 (const int)
0:33          move second child to first child ( temp float)
0:?             'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float)
0:33            direct index ( temp float)
0:33              m0_array: direct index for structure ( temp 2-element array of float)
0:33                contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:33                  'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:33                  Constant:
0:33                    1 (const int)
0:33                Constant:
0:33                  0 (const int)
0:33              Constant:
0:33                1 (const int)
0:33          move second child to first child ( temp int)
0:?             'ts.contains_no_builtin_io.m1' (layout( location=3) out int)
0:33            m1: direct index for structure ( temp int)
0:33              contains_no_builtin_io: direct index for structure ( temp structure{ temp 2-element array of float m0_array,  temp int m1})
0:33                'o' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:33                Constant:
0:33                  1 (const int)
0:33              Constant:
0:33                1 (const int)
0:33        EmitVertex ( temp void)
0:24  Function Definition: main( ( temp void)
0:24    Function Parameters: 
0:?     Sequence
0:24      Sequence
0:24        move second child to first child ( temp 4-component vector of float)
0:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index ( in 4-component vector of float Position)
0:?             'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24            Constant:
0:24              0 (const int)
0:24        move second child to first child ( temp 2-component vector of float)
0:24          tc: direct index for structure ( temp 2-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index (layout( location=0) in 2-component vector of float)
0:?             'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24            Constant:
0:24              0 (const int)
0:24        move second child to first child ( temp 4-component vector of float)
0:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                1 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index ( in 4-component vector of float Position)
0:?             'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24            Constant:
0:24              1 (const int)
0:24        move second child to first child ( temp 2-component vector of float)
0:24          tc: direct index for structure ( temp 2-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                1 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index (layout( location=0) in 2-component vector of float)
0:?             'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24            Constant:
0:24              1 (const int)
0:24        move second child to first child ( temp 4-component vector of float)
0:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                2 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index ( in 4-component vector of float Position)
0:?             'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:24            Constant:
0:24              2 (const int)
0:24        move second child to first child ( temp 2-component vector of float)
0:24          tc: direct index for structure ( temp 2-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?               'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:24              Constant:
0:24                2 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index (layout( location=0) in 2-component vector of float)
0:?             'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24            Constant:
0:24              2 (const int)
0:24      Function Call: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void)
0:?         'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
0:?         'ts' ( temp structure{ temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc} psIn,  temp structure{ temp 2-element array of float m0_array,  temp int m1} contains_no_builtin_io})
0:?   Linker Objects
0:?     'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:?     'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:?     'ts.pos' ( out 4-component vector of float Position)
0:?     'ts.psIn.tc' (layout( location=0) out 2-component vector of float)
0:?     'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float)
0:?     'ts.contains_no_builtin_io.m0_array[1]' (layout( location=2) out float)
0:?     'ts.contains_no_builtin_io.m1' (layout( location=3) out int)

// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 99

                              Capability Geometry
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Geometry 4  "main" 48 52 56 59 63 69 76
                              ExecutionMode 4 Triangles
                              ExecutionMode 4 Invocations 1
                              ExecutionMode 4 OutputTriangleStrip
                              ExecutionMode 4 OutputVertices 3
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "PS_IN"
                              MemberName 9(PS_IN) 0  "pos"
                              MemberName 9(PS_IN) 1  "tc"
                              Name 17  "STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO"
                              MemberName 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 0  "m0_array"
                              MemberName 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 1  "m1"
                              Name 18  "GS_OUT"
                              MemberName 18(GS_OUT) 0  "psIn"
                              MemberName 18(GS_OUT) 1  "contains_no_builtin_io"
                              Name 23  "@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;"
                              Name 21  "tin"
                              Name 22  "ts"
                              Name 25  "o"
                              Name 48  "ts.pos"
                              Name 52  "ts.psIn.tc"
                              Name 56  "ts.contains_no_builtin_io.m0_array[0]"
                              Name 59  "ts.contains_no_builtin_io.m0_array[1]"
                              Name 63  "ts.contains_no_builtin_io.m1"
                              Name 66  "tin"
                              Name 69  "tin.pos"
                              Name 76  "tin.tc"
                              Name 93  "ts"
                              Name 94  "param"
                              Name 96  "param"
                              Decorate 48(ts.pos) BuiltIn Position
                              Decorate 52(ts.psIn.tc) Location 0
                              Decorate 56(ts.contains_no_builtin_io.m0_array[0]) Location 1
                              Decorate 59(ts.contains_no_builtin_io.m0_array[1]) Location 2
                              Decorate 63(ts.contains_no_builtin_io.m1) Location 3
                              Decorate 69(tin.pos) BuiltIn Position
                              Decorate 76(tin.tc) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeVector 6(float) 2
        9(PS_IN):             TypeStruct 7(fvec4) 8(fvec2)
              10:             TypeInt 32 0
              11:     10(int) Constant 3
              12:             TypeArray 9(PS_IN) 11
              13:             TypePointer Function 12
              14:     10(int) Constant 2
              15:             TypeArray 6(float) 14
              16:             TypeInt 32 1
17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO):             TypeStruct 15 16(int)
      18(GS_OUT):             TypeStruct 9(PS_IN) 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO)
              19:             TypePointer Function 18(GS_OUT)
              20:             TypeFunction 2 13(ptr) 19(ptr)
              26:     16(int) Constant 0
              27:    6(float) Constant 1065353216
              28:    6(float) Constant 1073741824
              29:    6(float) Constant 1077936128
              30:    6(float) Constant 1082130432
              31:    7(fvec4) ConstantComposite 27 28 29 30
              32:             TypePointer Function 7(fvec4)
              34:     16(int) Constant 1
              35:    6(float) Constant 1084227584
              36:    6(float) Constant 1086324736
              37:    8(fvec2) ConstantComposite 35 36
              38:             TypePointer Function 8(fvec2)
              40:    6(float) Constant 1075000115
              41:             TypePointer Function 6(float)
              44:     16(int) Constant 2
              45:             TypePointer Function 16(int)
              47:             TypePointer Output 7(fvec4)
      48(ts.pos):     47(ptr) Variable Output
              51:             TypePointer Output 8(fvec2)
  52(ts.psIn.tc):     51(ptr) Variable Output
              55:             TypePointer Output 6(float)
56(ts.contains_no_builtin_io.m0_array[0]):     55(ptr) Variable Output
59(ts.contains_no_builtin_io.m0_array[1]):     55(ptr) Variable Output
              62:             TypePointer Output 16(int)
63(ts.contains_no_builtin_io.m1):     62(ptr) Variable Output
              67:             TypeArray 7(fvec4) 11
              68:             TypePointer Input 67
     69(tin.pos):     68(ptr) Variable Input
              70:             TypePointer Input 7(fvec4)
              74:             TypeArray 8(fvec2) 11
              75:             TypePointer Input 74
      76(tin.tc):     75(ptr) Variable Input
              77:             TypePointer Input 8(fvec2)
         4(main):           2 Function None 3
               5:             Label
         66(tin):     13(ptr) Variable Function
          93(ts):     19(ptr) Variable Function
       94(param):     13(ptr) Variable Function
       96(param):     19(ptr) Variable Function
              71:     70(ptr) AccessChain 69(tin.pos) 26
              72:    7(fvec4) Load 71
              73:     32(ptr) AccessChain 66(tin) 26 26
                              Store 73 72
              78:     77(ptr) AccessChain 76(tin.tc) 26
              79:    8(fvec2) Load 78
              80:     38(ptr) AccessChain 66(tin) 26 34
                              Store 80 79
              81:     70(ptr) AccessChain 69(tin.pos) 34
              82:    7(fvec4) Load 81
              83:     32(ptr) AccessChain 66(tin) 34 26
                              Store 83 82
              84:     77(ptr) AccessChain 76(tin.tc) 34
              85:    8(fvec2) Load 84
              86:     38(ptr) AccessChain 66(tin) 34 34
                              Store 86 85
              87:     70(ptr) AccessChain 69(tin.pos) 44
              88:    7(fvec4) Load 87
              89:     32(ptr) AccessChain 66(tin) 44 26
                              Store 89 88
              90:     77(ptr) AccessChain 76(tin.tc) 44
              91:    8(fvec2) Load 90
              92:     38(ptr) AccessChain 66(tin) 44 34
                              Store 92 91
              95:          12 Load 66(tin)
                              Store 94(param) 95
              97:           2 FunctionCall 23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;) 94(param) 96(param)
              98:  18(GS_OUT) Load 96(param)
                              Store 93(ts) 98
                              Return
                              FunctionEnd
23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;):           2 Function None 20
         21(tin):     13(ptr) FunctionParameter
          22(ts):     19(ptr) FunctionParameter
              24:             Label
           25(o):     19(ptr) Variable Function
              33:     32(ptr) AccessChain 25(o) 26 26
                              Store 33 31
              39:     38(ptr) AccessChain 25(o) 26 34
                              Store 39 37
              42:     41(ptr) AccessChain 25(o) 34 26 26
                              Store 42 40
              43:     41(ptr) AccessChain 25(o) 34 26 34
                              Store 43 40
              46:     45(ptr) AccessChain 25(o) 34 34
                              Store 46 44
              49:     32(ptr) AccessChain 25(o) 26 26
              50:    7(fvec4) Load 49
                              Store 48(ts.pos) 50
              53:     38(ptr) AccessChain 25(o) 26 34
              54:    8(fvec2) Load 53
                              Store 52(ts.psIn.tc) 54
              57:     41(ptr) AccessChain 25(o) 34 26 26
              58:    6(float) Load 57
                              Store 56(ts.contains_no_builtin_io.m0_array[0]) 58
              60:     41(ptr) AccessChain 25(o) 34 26 34
              61:    6(float) Load 60
                              Store 59(ts.contains_no_builtin_io.m0_array[1]) 61
              64:     45(ptr) AccessChain 25(o) 34 34
              65:     16(int) Load 64
                              Store 63(ts.contains_no_builtin_io.m1) 65
                              EmitVertex
                              Return
                              FunctionEnd
