hlsl.hull.4.tesc
Shader version: 500
vertices = 3
vertex spacing = fractional_odd_spacing
triangle order = cw
0:? Sequence
0:25  Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:25    Function Parameters: 
0:25      'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?     Sequence
0:26      Sequence
0:26        move second child to first child ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:26          'O' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:26          Constant:
0:26            0.000000
0:26            0.000000
0:26            0.000000
0:26            0.000000
0:28      move second child to first child ( temp float)
0:28        fInsideTessFactor: direct index for structure ( temp float)
0:28          'O' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:28          Constant:
0:28            1 (const int)
0:28        add ( temp float)
0:28          direct index ( temp float)
0:28            m_Position: direct index for structure ( temp 4-component vector of float)
0:28              direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:28                'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:28                Constant:
0:28                  0 (const int)
0:28              Constant:
0:28                0 (const int)
0:28            Constant:
0:28              3 (const int)
0:28          direct index ( temp float)
0:28            m_Normal: direct index for structure ( temp 4-component vector of float)
0:28              direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:28                'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:28                Constant:
0:28                  0 (const int)
0:28              Constant:
0:28                1 (const int)
0:28            Constant:
0:28              3 (const int)
0:30      Branch: Return with expression
0:30        'O' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:39  Function Definition: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position})
0:39    Function Parameters: 
0:39      'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39      'cpid' ( in uint)
0:?     Sequence
0:40      Sequence
0:40        move second child to first child ( temp structure{ temp 4-component vector of float m_Position})
0:40          'output' ( temp structure{ temp 4-component vector of float m_Position})
0:40          Constant:
0:40            0.000000
0:40            0.000000
0:40            0.000000
0:40            0.000000
0:41      move second child to first child ( temp 4-component vector of float)
0:41        m_Position: direct index for structure ( temp 4-component vector of float)
0:41          'output' ( temp structure{ temp 4-component vector of float m_Position})
0:41          Constant:
0:41            0 (const int)
0:41        Constant:
0:41          0.000000
0:41          0.000000
0:41          0.000000
0:41          0.000000
0:42      Branch: Return with expression
0:42        'output' ( temp structure{ temp 4-component vector of float m_Position})
0:39  Function Definition: main( ( temp void)
0:39    Function Parameters: 
0:?     Sequence
0:39      Sequence
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Position: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                0 (const int)
0:39            Constant:
0:39              0 (const int)
0:39          direct index ( in 4-component vector of float Position)
0:?             'I.m_Position' ( in 3-element array of 4-component vector of float Position)
0:39            Constant:
0:39              0 (const int)
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Normal: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                0 (const int)
0:39            Constant:
0:39              1 (const int)
0:39          direct index (layout( location=0) in 4-component vector of float)
0:?             'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39            Constant:
0:39              0 (const int)
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Position: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                1 (const int)
0:39            Constant:
0:39              0 (const int)
0:39          direct index ( in 4-component vector of float Position)
0:?             'I.m_Position' ( in 3-element array of 4-component vector of float Position)
0:39            Constant:
0:39              1 (const int)
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Normal: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                1 (const int)
0:39            Constant:
0:39              1 (const int)
0:39          direct index (layout( location=0) in 4-component vector of float)
0:?             'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39            Constant:
0:39              1 (const int)
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Position: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                2 (const int)
0:39            Constant:
0:39              0 (const int)
0:39          direct index ( in 4-component vector of float Position)
0:?             'I.m_Position' ( in 3-element array of 4-component vector of float Position)
0:39            Constant:
0:39              2 (const int)
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Normal: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                2 (const int)
0:39            Constant:
0:39              1 (const int)
0:39          direct index (layout( location=0) in 4-component vector of float)
0:?             'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39            Constant:
0:39              2 (const int)
0:39      move second child to first child ( temp uint)
0:?         'cpid' ( temp uint)
0:?         'cpid' ( in uint InvocationID)
0:39      Sequence
0:39        move second child to first child ( temp 4-component vector of float)
0:39          indirect index ( out 4-component vector of float Position)
0:?             '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
0:?             'cpid' ( in uint InvocationID)
0:39          m_Position: direct index for structure ( temp 4-component vector of float)
0:39            Function Call: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'cpid' ( temp uint)
0:39            Constant:
0:39              0 (const int)
0:?       Barrier ( temp void)
0:?       Test condition and select ( temp void)
0:?         Condition
0:?         Compare Equal ( temp bool)
0:?           'cpid' ( in uint InvocationID)
0:?           Constant:
0:?             0 (const int)
0:?         true case
0:?         Sequence
0:?           move second child to first child ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?             '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?             Function Call: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?           Sequence
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   0 (const int)
0:?               direct index ( temp float)
0:?                 fTessFactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   0 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   1 (const int)
0:?               direct index ( temp float)
0:?                 fTessFactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   1 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   2 (const int)
0:?               direct index ( temp float)
0:?                 fTessFactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   2 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelInner)
0:?                 '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)
0:?                 Constant:
0:?                   0 (const int)
0:?               fInsideTessFactor: direct index for structure ( temp float)
0:?                 '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?                 Constant:
0:?                   1 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
0:?     'I.m_Position' ( in 3-element array of 4-component vector of float Position)
0:?     'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:?     'cpid' ( in uint InvocationID)
0:?     '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:?     '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)


Linked tessellation control stage:


Shader version: 500
vertices = 3
vertex spacing = fractional_odd_spacing
triangle order = cw
0:? Sequence
0:25  Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:25    Function Parameters: 
0:25      'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?     Sequence
0:26      Sequence
0:26        move second child to first child ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:26          'O' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:26          Constant:
0:26            0.000000
0:26            0.000000
0:26            0.000000
0:26            0.000000
0:28      move second child to first child ( temp float)
0:28        fInsideTessFactor: direct index for structure ( temp float)
0:28          'O' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:28          Constant:
0:28            1 (const int)
0:28        add ( temp float)
0:28          direct index ( temp float)
0:28            m_Position: direct index for structure ( temp 4-component vector of float)
0:28              direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:28                'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:28                Constant:
0:28                  0 (const int)
0:28              Constant:
0:28                0 (const int)
0:28            Constant:
0:28              3 (const int)
0:28          direct index ( temp float)
0:28            m_Normal: direct index for structure ( temp 4-component vector of float)
0:28              direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:28                'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:28                Constant:
0:28                  0 (const int)
0:28              Constant:
0:28                1 (const int)
0:28            Constant:
0:28              3 (const int)
0:30      Branch: Return with expression
0:30        'O' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:39  Function Definition: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position})
0:39    Function Parameters: 
0:39      'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39      'cpid' ( in uint)
0:?     Sequence
0:40      Sequence
0:40        move second child to first child ( temp structure{ temp 4-component vector of float m_Position})
0:40          'output' ( temp structure{ temp 4-component vector of float m_Position})
0:40          Constant:
0:40            0.000000
0:40            0.000000
0:40            0.000000
0:40            0.000000
0:41      move second child to first child ( temp 4-component vector of float)
0:41        m_Position: direct index for structure ( temp 4-component vector of float)
0:41          'output' ( temp structure{ temp 4-component vector of float m_Position})
0:41          Constant:
0:41            0 (const int)
0:41        Constant:
0:41          0.000000
0:41          0.000000
0:41          0.000000
0:41          0.000000
0:42      Branch: Return with expression
0:42        'output' ( temp structure{ temp 4-component vector of float m_Position})
0:39  Function Definition: main( ( temp void)
0:39    Function Parameters: 
0:?     Sequence
0:39      Sequence
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Position: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                0 (const int)
0:39            Constant:
0:39              0 (const int)
0:39          direct index ( in 4-component vector of float Position)
0:?             'I.m_Position' ( in 3-element array of 4-component vector of float Position)
0:39            Constant:
0:39              0 (const int)
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Normal: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                0 (const int)
0:39            Constant:
0:39              1 (const int)
0:39          direct index (layout( location=0) in 4-component vector of float)
0:?             'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39            Constant:
0:39              0 (const int)
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Position: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                1 (const int)
0:39            Constant:
0:39              0 (const int)
0:39          direct index ( in 4-component vector of float Position)
0:?             'I.m_Position' ( in 3-element array of 4-component vector of float Position)
0:39            Constant:
0:39              1 (const int)
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Normal: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                1 (const int)
0:39            Constant:
0:39              1 (const int)
0:39          direct index (layout( location=0) in 4-component vector of float)
0:?             'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39            Constant:
0:39              1 (const int)
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Position: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                2 (const int)
0:39            Constant:
0:39              0 (const int)
0:39          direct index ( in 4-component vector of float Position)
0:?             'I.m_Position' ( in 3-element array of 4-component vector of float Position)
0:39            Constant:
0:39              2 (const int)
0:39        move second child to first child ( temp 4-component vector of float)
0:39          m_Normal: direct index for structure ( temp 4-component vector of float)
0:39            direct index ( temp structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:39              Constant:
0:39                2 (const int)
0:39            Constant:
0:39              1 (const int)
0:39          direct index (layout( location=0) in 4-component vector of float)
0:?             'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39            Constant:
0:39              2 (const int)
0:39      move second child to first child ( temp uint)
0:?         'cpid' ( temp uint)
0:?         'cpid' ( in uint InvocationID)
0:39      Sequence
0:39        move second child to first child ( temp 4-component vector of float)
0:39          indirect index ( out 4-component vector of float Position)
0:?             '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
0:?             'cpid' ( in uint InvocationID)
0:39          m_Position: direct index for structure ( temp 4-component vector of float)
0:39            Function Call: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?               'cpid' ( temp uint)
0:39            Constant:
0:39              0 (const int)
0:?       Barrier ( temp void)
0:?       Test condition and select ( temp void)
0:?         Condition
0:?         Compare Equal ( temp bool)
0:?           'cpid' ( in uint InvocationID)
0:?           Constant:
0:?             0 (const int)
0:?         true case
0:?         Sequence
0:?           move second child to first child ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?             '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?             Function Call: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?               'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position,  temp 4-component vector of float m_Normal})
0:?           Sequence
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   0 (const int)
0:?               direct index ( temp float)
0:?                 fTessFactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   0 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   1 (const int)
0:?               direct index ( temp float)
0:?                 fTessFactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   1 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   2 (const int)
0:?               direct index ( temp float)
0:?                 fTessFactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   2 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelInner)
0:?                 '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)
0:?                 Constant:
0:?                   0 (const int)
0:?               fInsideTessFactor: direct index for structure ( temp float)
0:?                 '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor,  temp float fInsideTessFactor})
0:?                 Constant:
0:?                   1 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
0:?     'I.m_Position' ( in 3-element array of 4-component vector of float Position)
0:?     'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:?     'cpid' ( in uint InvocationID)
0:?     '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:?     '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)

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

                              Capability Tessellation
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationControl 4  "main" 56 61 80 83 107 120
                              ExecutionMode 4 OutputVertices 3
                              ExecutionMode 4 Triangles
                              ExecutionMode 4 SpacingFractionalOdd
                              ExecutionMode 4 VertexOrderCw
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "HS_Input"
                              MemberName 8(HS_Input) 0  "m_Position"
                              MemberName 8(HS_Input) 1  "m_Normal"
                              Name 14  "HS_Output"
                              MemberName 14(HS_Output) 0  "fTessFactor"
                              MemberName 14(HS_Output) 1  "fInsideTessFactor"
                              Name 17  "HS_ConstFunc(struct-HS_Input-vf4-vf41[3];"
                              Name 16  "I"
                              Name 20  "HS_Main_Output"
                              MemberName 20(HS_Main_Output) 0  "m_Position"
                              Name 24  "@main(struct-HS_Input-vf4-vf41[3];u1;"
                              Name 22  "I"
                              Name 23  "cpid"
                              Name 27  "O"
                              Name 45  "output"
                              Name 53  "I"
                              Name 56  "I.m_Position"
                              Name 61  "I.m_Normal"
                              Name 78  "cpid"
                              Name 80  "cpid"
                              Name 83  "@entryPointOutput.m_Position"
                              Name 85  "param"
                              Name 87  "param"
                              Name 101  "@patchConstantResult"
                              Name 102  "param"
                              Name 107  "@patchConstantOutput.fTessFactor"
                              Name 120  "@patchConstantOutput.fInsideTessFactor"
                              Decorate 56(I.m_Position) BuiltIn Position
                              Decorate 61(I.m_Normal) Location 0
                              Decorate 80(cpid) BuiltIn InvocationId
                              Decorate 83(@entryPointOutput.m_Position) BuiltIn Position
                              Decorate 107(@patchConstantOutput.fTessFactor) Patch
                              Decorate 107(@patchConstantOutput.fTessFactor) BuiltIn TessLevelOuter
                              Decorate 120(@patchConstantOutput.fInsideTessFactor) Patch
                              Decorate 120(@patchConstantOutput.fInsideTessFactor) BuiltIn TessLevelInner
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
     8(HS_Input):             TypeStruct 7(fvec4) 7(fvec4)
               9:             TypeInt 32 0
              10:      9(int) Constant 3
              11:             TypeArray 8(HS_Input) 10
              12:             TypePointer Function 11
              13:             TypeArray 6(float) 10
   14(HS_Output):             TypeStruct 13 6(float)
              15:             TypeFunction 14(HS_Output) 12(ptr)
              19:             TypePointer Function 9(int)
20(HS_Main_Output):             TypeStruct 7(fvec4)
              21:             TypeFunction 20(HS_Main_Output) 12(ptr) 19(ptr)
              26:             TypePointer Function 14(HS_Output)
              28:    6(float) Constant 0
              29:          13 ConstantComposite 28 28 28
              30:14(HS_Output) ConstantComposite 29 28
              31:             TypeInt 32 1
              32:     31(int) Constant 1
              33:     31(int) Constant 0
              34:             TypePointer Function 6(float)
              44:             TypePointer Function 20(HS_Main_Output)
              46:    7(fvec4) ConstantComposite 28 28 28 28
              47:20(HS_Main_Output) ConstantComposite 46
              48:             TypePointer Function 7(fvec4)
              54:             TypeArray 7(fvec4) 10
              55:             TypePointer Input 54
56(I.m_Position):     55(ptr) Variable Input
              57:             TypePointer Input 7(fvec4)
  61(I.m_Normal):     55(ptr) Variable Input
              71:     31(int) Constant 2
              79:             TypePointer Input 9(int)
        80(cpid):     79(ptr) Variable Input
              82:             TypePointer Output 54
83(@entryPointOutput.m_Position):     82(ptr) Variable Output
              91:             TypePointer Output 7(fvec4)
              93:      9(int) Constant 2
              94:      9(int) Constant 4
              95:      9(int) Constant 0
              97:             TypeBool
             105:             TypeArray 6(float) 94
             106:             TypePointer Output 105
107(@patchConstantOutput.fTessFactor):    106(ptr) Variable Output
             110:             TypePointer Output 6(float)
             118:             TypeArray 6(float) 93
             119:             TypePointer Output 118
120(@patchConstantOutput.fInsideTessFactor):    119(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
           53(I):     12(ptr) Variable Function
        78(cpid):     19(ptr) Variable Function
       85(param):     12(ptr) Variable Function
       87(param):     19(ptr) Variable Function
101(@patchConstantResult):     26(ptr) Variable Function
      102(param):     12(ptr) Variable Function
              58:     57(ptr) AccessChain 56(I.m_Position) 33
              59:    7(fvec4) Load 58
              60:     48(ptr) AccessChain 53(I) 33 33
                              Store 60 59
              62:     57(ptr) AccessChain 61(I.m_Normal) 33
              63:    7(fvec4) Load 62
              64:     48(ptr) AccessChain 53(I) 33 32
                              Store 64 63
              65:     57(ptr) AccessChain 56(I.m_Position) 32
              66:    7(fvec4) Load 65
              67:     48(ptr) AccessChain 53(I) 32 33
                              Store 67 66
              68:     57(ptr) AccessChain 61(I.m_Normal) 32
              69:    7(fvec4) Load 68
              70:     48(ptr) AccessChain 53(I) 32 32
                              Store 70 69
              72:     57(ptr) AccessChain 56(I.m_Position) 71
              73:    7(fvec4) Load 72
              74:     48(ptr) AccessChain 53(I) 71 33
                              Store 74 73
              75:     57(ptr) AccessChain 61(I.m_Normal) 71
              76:    7(fvec4) Load 75
              77:     48(ptr) AccessChain 53(I) 71 32
                              Store 77 76
              81:      9(int) Load 80(cpid)
                              Store 78(cpid) 81
              84:      9(int) Load 80(cpid)
              86:          11 Load 53(I)
                              Store 85(param) 86
              88:      9(int) Load 78(cpid)
                              Store 87(param) 88
              89:20(HS_Main_Output) FunctionCall 24(@main(struct-HS_Input-vf4-vf41[3];u1;) 85(param) 87(param)
              90:    7(fvec4) CompositeExtract 89 0
              92:     91(ptr) AccessChain 83(@entryPointOutput.m_Position) 84
                              Store 92 90
                              ControlBarrier 93 94 95
              96:      9(int) Load 80(cpid)
              98:    97(bool) IEqual 96 33
                              SelectionMerge 100 None
                              BranchConditional 98 99 100
              99:               Label
             103:          11   Load 53(I)
                                Store 102(param) 103
             104:14(HS_Output)   FunctionCall 17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];) 102(param)
                                Store 101(@patchConstantResult) 104
             108:     34(ptr)   AccessChain 101(@patchConstantResult) 33 33
             109:    6(float)   Load 108
             111:    110(ptr)   AccessChain 107(@patchConstantOutput.fTessFactor) 33
                                Store 111 109
             112:     34(ptr)   AccessChain 101(@patchConstantResult) 33 32
             113:    6(float)   Load 112
             114:    110(ptr)   AccessChain 107(@patchConstantOutput.fTessFactor) 32
                                Store 114 113
             115:     34(ptr)   AccessChain 101(@patchConstantResult) 33 71
             116:    6(float)   Load 115
             117:    110(ptr)   AccessChain 107(@patchConstantOutput.fTessFactor) 71
                                Store 117 116
             121:     34(ptr)   AccessChain 101(@patchConstantResult) 32
             122:    6(float)   Load 121
             123:    110(ptr)   AccessChain 120(@patchConstantOutput.fInsideTessFactor) 33
                                Store 123 122
                                Branch 100
             100:             Label
                              Return
                              FunctionEnd
17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];):14(HS_Output) Function None 15
           16(I):     12(ptr) FunctionParameter
              18:             Label
           27(O):     26(ptr) Variable Function
                              Store 27(O) 30
              35:     34(ptr) AccessChain 16(I) 33 33 10
              36:    6(float) Load 35
              37:     34(ptr) AccessChain 16(I) 33 32 10
              38:    6(float) Load 37
              39:    6(float) FAdd 36 38
              40:     34(ptr) AccessChain 27(O) 32
                              Store 40 39
              41:14(HS_Output) Load 27(O)
                              ReturnValue 41
                              FunctionEnd
24(@main(struct-HS_Input-vf4-vf41[3];u1;):20(HS_Main_Output) Function None 21
           22(I):     12(ptr) FunctionParameter
        23(cpid):     19(ptr) FunctionParameter
              25:             Label
      45(output):     44(ptr) Variable Function
                              Store 45(output) 47
              49:     48(ptr) AccessChain 45(output) 33
                              Store 49 46
              50:20(HS_Main_Output) Load 45(output)
                              ReturnValue 50
                              FunctionEnd
