hlsl.hull.ctrlpt-2.tesc
Shader version: 500
vertices = 3
vertex spacing = fractional_odd_spacing
triangle order = cw
0:? Sequence
0:28  Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:28    Function Parameters: 
0:28      'i' ( in 3-element array of structure{ temp 3-component vector of float val})
0:28      'cpid' ( in uint)
0:?     Sequence
0:29      val: direct index for structure ( temp 3-component vector of float)
0:29        direct index ( temp structure{ temp 3-component vector of float val})
0:29          'i' ( in 3-element array of structure{ temp 3-component vector of float val})
0:29          Constant:
0:29            0 (const int)
0:29        Constant:
0:29          0 (const int)
0:32      move second child to first child ( temp 3-component vector of float)
0:32        val: direct index for structure ( temp 3-component vector of float)
0:32          'o' ( temp structure{ temp 3-component vector of float val})
0:32          Constant:
0:32            0 (const int)
0:32        Construct vec3 ( temp 3-component vector of float)
0:32          Convert uint to float ( temp float)
0:32            'cpid' ( in uint)
0:33      Branch: Return with expression
0:33        'o' ( temp structure{ temp 3-component vector of float val})
0:28  Function Definition: main( ( temp void)
0:28    Function Parameters: 
0:?     Sequence
0:28      Sequence
0:28        move second child to first child ( temp 3-component vector of float)
0:28          val: direct index for structure ( temp 3-component vector of float)
0:28            direct index ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28              Constant:
0:28                0 (const int)
0:28            Constant:
0:28              0 (const int)
0:28          direct index (layout( location=0) in 3-component vector of float)
0:?             'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28            Constant:
0:28              0 (const int)
0:28        move second child to first child ( temp 3-component vector of float)
0:28          val: direct index for structure ( temp 3-component vector of float)
0:28            direct index ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28              Constant:
0:28                1 (const int)
0:28            Constant:
0:28              0 (const int)
0:28          direct index (layout( location=0) in 3-component vector of float)
0:?             'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28            Constant:
0:28              1 (const int)
0:28        move second child to first child ( temp 3-component vector of float)
0:28          val: direct index for structure ( temp 3-component vector of float)
0:28            direct index ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28              Constant:
0:28                2 (const int)
0:28            Constant:
0:28              0 (const int)
0:28          direct index (layout( location=0) in 3-component vector of float)
0:?             'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28            Constant:
0:28              2 (const int)
0:28      move second child to first child ( temp uint)
0:?         'cpid' ( temp uint)
0:?         'cpid' ( in uint InvocationID)
0:28      Sequence
0:28        move second child to first child ( temp 3-component vector of float)
0:28          indirect index (layout( location=0) out 3-component vector of float)
0:?             '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:?             'cpid' ( in uint InvocationID)
0:28          val: direct index for structure ( temp 3-component vector of float)
0:28            Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               'cpid' ( temp uint)
0:28            Constant:
0:28              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-component vector of float val})
0:?             direct index ( temp structure{ temp 3-component vector of float val})
0:?               'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 0 (const int)
0:?             Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 0 (const uint)
0:?           move second child to first child ( temp structure{ temp 3-component vector of float val})
0:?             direct index ( temp structure{ temp 3-component vector of float val})
0:?               'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 1 (const int)
0:?             Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 1 (const uint)
0:?           move second child to first child ( temp structure{ temp 3-component vector of float val})
0:?             direct index ( temp structure{ temp 3-component vector of float val})
0:?               'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 2 (const int)
0:?             Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 2 (const uint)
0:?           move second child to first child ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:?             '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:?             Function Call: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:?               'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?           Sequence
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   0 (const int)
0:?               direct index ( temp float)
0:?                 tfactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
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.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   1 (const int)
0:?               direct index ( temp float)
0:?                 tfactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
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.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   2 (const int)
0:?               direct index ( temp float)
0:?                 tfactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
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.flInFactor' ( patch out 2-element array of float TessLevelInner)
0:?                 Constant:
0:?                   0 (const int)
0:?               flInFactor: direct index for structure ( temp float)
0:?                 '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:?                 Constant:
0:?                   1 (const int)
0:38  Function Definition: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:38    Function Parameters: 
0:38      'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
0:38      'pcf_in' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
0:?     Sequence
0:41      move second child to first child ( temp float)
0:41        direct index ( temp float)
0:41          tfactor: direct index for structure ( temp 3-element array of float)
0:41            'o' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:41            Constant:
0:41              0 (const int)
0:41          Constant:
0:41            0 (const int)
0:41        direct index ( temp float)
0:41          val: direct index for structure ( temp 3-component vector of float)
0:41            direct index ( temp structure{ temp 3-component vector of float val})
0:41              'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
0:41              Constant:
0:41                0 (const int)
0:41            Constant:
0:41              0 (const int)
0:41          Constant:
0:41            0 (const int)
0:42      move second child to first child ( temp float)
0:42        direct index ( temp float)
0:42          tfactor: direct index for structure ( temp 3-element array of float)
0:42            'o' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:42            Constant:
0:42              0 (const int)
0:42          Constant:
0:42            1 (const int)
0:42        direct index ( temp float)
0:42          val: direct index for structure ( temp 3-component vector of float)
0:42            direct index ( temp structure{ temp 3-component vector of float val})
0:42              'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
0:42              Constant:
0:42                1 (const int)
0:42            Constant:
0:42              0 (const int)
0:42          Constant:
0:42            0 (const int)
0:43      move second child to first child ( temp float)
0:43        direct index ( temp float)
0:43          tfactor: direct index for structure ( temp 3-element array of float)
0:43            'o' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:43            Constant:
0:43              0 (const int)
0:43          Constant:
0:43            2 (const int)
0:43        direct index ( temp float)
0:43          val: direct index for structure ( temp 3-component vector of float)
0:43            direct index ( temp structure{ temp 3-component vector of float val})
0:43              'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
0:43              Constant:
0:43                2 (const int)
0:43            Constant:
0:43              0 (const int)
0:43          Constant:
0:43            0 (const int)
0:44      move second child to first child ( temp float)
0:44        flInFactor: direct index for structure ( temp float)
0:44          'o' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:44          Constant:
0:44            1 (const int)
0:44        Constant:
0:44          4.000000
0:46      Branch: Return with expression
0:46        'o' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:?   Linker Objects
0:?     '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:?     'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:?     'cpid' ( in uint InvocationID)
0:?     '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:?     '@patchConstantOutput.flInFactor' ( 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:28  Function Definition: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:28    Function Parameters: 
0:28      'i' ( in 3-element array of structure{ temp 3-component vector of float val})
0:28      'cpid' ( in uint)
0:?     Sequence
0:29      val: direct index for structure ( temp 3-component vector of float)
0:29        direct index ( temp structure{ temp 3-component vector of float val})
0:29          'i' ( in 3-element array of structure{ temp 3-component vector of float val})
0:29          Constant:
0:29            0 (const int)
0:29        Constant:
0:29          0 (const int)
0:32      move second child to first child ( temp 3-component vector of float)
0:32        val: direct index for structure ( temp 3-component vector of float)
0:32          'o' ( temp structure{ temp 3-component vector of float val})
0:32          Constant:
0:32            0 (const int)
0:32        Construct vec3 ( temp 3-component vector of float)
0:32          Convert uint to float ( temp float)
0:32            'cpid' ( in uint)
0:33      Branch: Return with expression
0:33        'o' ( temp structure{ temp 3-component vector of float val})
0:28  Function Definition: main( ( temp void)
0:28    Function Parameters: 
0:?     Sequence
0:28      Sequence
0:28        move second child to first child ( temp 3-component vector of float)
0:28          val: direct index for structure ( temp 3-component vector of float)
0:28            direct index ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28              Constant:
0:28                0 (const int)
0:28            Constant:
0:28              0 (const int)
0:28          direct index (layout( location=0) in 3-component vector of float)
0:?             'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28            Constant:
0:28              0 (const int)
0:28        move second child to first child ( temp 3-component vector of float)
0:28          val: direct index for structure ( temp 3-component vector of float)
0:28            direct index ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28              Constant:
0:28                1 (const int)
0:28            Constant:
0:28              0 (const int)
0:28          direct index (layout( location=0) in 3-component vector of float)
0:?             'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28            Constant:
0:28              1 (const int)
0:28        move second child to first child ( temp 3-component vector of float)
0:28          val: direct index for structure ( temp 3-component vector of float)
0:28            direct index ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28              Constant:
0:28                2 (const int)
0:28            Constant:
0:28              0 (const int)
0:28          direct index (layout( location=0) in 3-component vector of float)
0:?             'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28            Constant:
0:28              2 (const int)
0:28      move second child to first child ( temp uint)
0:?         'cpid' ( temp uint)
0:?         'cpid' ( in uint InvocationID)
0:28      Sequence
0:28        move second child to first child ( temp 3-component vector of float)
0:28          indirect index (layout( location=0) out 3-component vector of float)
0:?             '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:?             'cpid' ( in uint InvocationID)
0:28          val: direct index for structure ( temp 3-component vector of float)
0:28            Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               'cpid' ( temp uint)
0:28            Constant:
0:28              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-component vector of float val})
0:?             direct index ( temp structure{ temp 3-component vector of float val})
0:?               'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 0 (const int)
0:?             Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 0 (const uint)
0:?           move second child to first child ( temp structure{ temp 3-component vector of float val})
0:?             direct index ( temp structure{ temp 3-component vector of float val})
0:?               'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 1 (const int)
0:?             Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 1 (const uint)
0:?           move second child to first child ( temp structure{ temp 3-component vector of float val})
0:?             direct index ( temp structure{ temp 3-component vector of float val})
0:?               'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 2 (const int)
0:?             Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               Constant:
0:?                 2 (const uint)
0:?           move second child to first child ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:?             '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:?             Function Call: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:?               'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?               'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:?           Sequence
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   0 (const int)
0:?               direct index ( temp float)
0:?                 tfactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
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.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   1 (const int)
0:?               direct index ( temp float)
0:?                 tfactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
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.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   2 (const int)
0:?               direct index ( temp float)
0:?                 tfactor: direct index for structure ( temp 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
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.flInFactor' ( patch out 2-element array of float TessLevelInner)
0:?                 Constant:
0:?                   0 (const int)
0:?               flInFactor: direct index for structure ( temp float)
0:?                 '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:?                 Constant:
0:?                   1 (const int)
0:38  Function Definition: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:38    Function Parameters: 
0:38      'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
0:38      'pcf_in' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
0:?     Sequence
0:41      move second child to first child ( temp float)
0:41        direct index ( temp float)
0:41          tfactor: direct index for structure ( temp 3-element array of float)
0:41            'o' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:41            Constant:
0:41              0 (const int)
0:41          Constant:
0:41            0 (const int)
0:41        direct index ( temp float)
0:41          val: direct index for structure ( temp 3-component vector of float)
0:41            direct index ( temp structure{ temp 3-component vector of float val})
0:41              'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
0:41              Constant:
0:41                0 (const int)
0:41            Constant:
0:41              0 (const int)
0:41          Constant:
0:41            0 (const int)
0:42      move second child to first child ( temp float)
0:42        direct index ( temp float)
0:42          tfactor: direct index for structure ( temp 3-element array of float)
0:42            'o' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:42            Constant:
0:42              0 (const int)
0:42          Constant:
0:42            1 (const int)
0:42        direct index ( temp float)
0:42          val: direct index for structure ( temp 3-component vector of float)
0:42            direct index ( temp structure{ temp 3-component vector of float val})
0:42              'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
0:42              Constant:
0:42                1 (const int)
0:42            Constant:
0:42              0 (const int)
0:42          Constant:
0:42            0 (const int)
0:43      move second child to first child ( temp float)
0:43        direct index ( temp float)
0:43          tfactor: direct index for structure ( temp 3-element array of float)
0:43            'o' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:43            Constant:
0:43              0 (const int)
0:43          Constant:
0:43            2 (const int)
0:43        direct index ( temp float)
0:43          val: direct index for structure ( temp 3-component vector of float)
0:43            direct index ( temp structure{ temp 3-component vector of float val})
0:43              'pcf_out' ( const (read only) 3-element array of structure{ temp 3-component vector of float val})
0:43              Constant:
0:43                2 (const int)
0:43            Constant:
0:43              0 (const int)
0:43          Constant:
0:43            0 (const int)
0:44      move second child to first child ( temp float)
0:44        flInFactor: direct index for structure ( temp float)
0:44          'o' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:44          Constant:
0:44            1 (const int)
0:44        Constant:
0:44          4.000000
0:46      Branch: Return with expression
0:46        'o' ( temp structure{ temp 3-element array of float tfactor,  temp float flInFactor})
0:?   Linker Objects
0:?     '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:?     'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:?     'cpid' ( in uint InvocationID)
0:?     '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:?     '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)

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

                              Capability Tessellation
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationControl 4  "main" 43 58 61 107 121
                              ExecutionMode 4 OutputVertices 3
                              ExecutionMode 4 Triangles
                              ExecutionMode 4 SpacingFractionalOdd
                              ExecutionMode 4 VertexOrderCw
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "hs_in_t"
                              MemberName 8(hs_in_t) 0  "val"
                              Name 14  "hs_out_t"
                              MemberName 14(hs_out_t) 0  "val"
                              Name 18  "@main(struct-hs_in_t-vf31[3];u1;"
                              Name 16  "i"
                              Name 17  "cpid"
                              Name 22  "hs_pcf_t"
                              MemberName 22(hs_pcf_t) 0  "tfactor"
                              MemberName 22(hs_pcf_t) 1  "flInFactor"
                              Name 26  "PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];"
                              Name 24  "pcf_out"
                              Name 25  "pcf_in"
                              Name 31  "o"
                              Name 40  "i"
                              Name 43  "i.val"
                              Name 56  "cpid"
                              Name 58  "cpid"
                              Name 61  "@entryPointOutput.val"
                              Name 63  "param"
                              Name 65  "param"
                              Name 80  "pcf_out"
                              Name 81  "i"
                              Name 82  "param"
                              Name 84  "param"
                              Name 87  "i"
                              Name 89  "param"
                              Name 91  "param"
                              Name 94  "i"
                              Name 95  "param"
                              Name 97  "param"
                              Name 101  "@patchConstantResult"
                              Name 107  "@patchConstantOutput.tfactor"
                              Name 121  "@patchConstantOutput.flInFactor"
                              Name 125  "o"
                              Decorate 43(i.val) Location 0
                              Decorate 58(cpid) BuiltIn InvocationId
                              Decorate 61(@entryPointOutput.val) Location 0
                              Decorate 107(@patchConstantOutput.tfactor) Patch
                              Decorate 107(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter
                              Decorate 121(@patchConstantOutput.flInFactor) Patch
                              Decorate 121(@patchConstantOutput.flInFactor) BuiltIn TessLevelInner
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
      8(hs_in_t):             TypeStruct 7(fvec3)
               9:             TypeInt 32 0
              10:      9(int) Constant 3
              11:             TypeArray 8(hs_in_t) 10
              12:             TypePointer Function 11
              13:             TypePointer Function 9(int)
    14(hs_out_t):             TypeStruct 7(fvec3)
              15:             TypeFunction 14(hs_out_t) 12(ptr) 13(ptr)
              20:             TypeArray 14(hs_out_t) 10
              21:             TypeArray 6(float) 10
    22(hs_pcf_t):             TypeStruct 21 6(float)
              23:             TypeFunction 22(hs_pcf_t) 20 11
              28:             TypeInt 32 1
              29:     28(int) Constant 0
              30:             TypePointer Function 14(hs_out_t)
              35:             TypePointer Function 7(fvec3)
              41:             TypeArray 7(fvec3) 10
              42:             TypePointer Input 41
       43(i.val):     42(ptr) Variable Input
              44:             TypePointer Input 7(fvec3)
              48:     28(int) Constant 1
              52:     28(int) Constant 2
              57:             TypePointer Input 9(int)
        58(cpid):     57(ptr) Variable Input
              60:             TypePointer Output 41
61(@entryPointOutput.val):     60(ptr) Variable Output
              69:             TypePointer Output 7(fvec3)
              71:      9(int) Constant 2
              72:      9(int) Constant 4
              73:      9(int) Constant 0
              75:             TypeBool
              79:             TypePointer Function 20
              88:      9(int) Constant 1
             100:             TypePointer Function 22(hs_pcf_t)
             105:             TypeArray 6(float) 72
             106:             TypePointer Output 105
107(@patchConstantOutput.tfactor):    106(ptr) Variable Output
             108:             TypePointer Function 6(float)
             111:             TypePointer Output 6(float)
             119:             TypeArray 6(float) 71
             120:             TypePointer Output 119
121(@patchConstantOutput.flInFactor):    120(ptr) Variable Output
             132:    6(float) Constant 1082130432
         4(main):           2 Function None 3
               5:             Label
           40(i):     12(ptr) Variable Function
        56(cpid):     13(ptr) Variable Function
       63(param):     12(ptr) Variable Function
       65(param):     13(ptr) Variable Function
     80(pcf_out):     79(ptr) Variable Function
           81(i):     12(ptr) Variable Function
       82(param):     12(ptr) Variable Function
       84(param):     13(ptr) Variable Function
           87(i):     12(ptr) Variable Function
       89(param):     12(ptr) Variable Function
       91(param):     13(ptr) Variable Function
           94(i):     12(ptr) Variable Function
       95(param):     12(ptr) Variable Function
       97(param):     13(ptr) Variable Function
101(@patchConstantResult):    100(ptr) Variable Function
              45:     44(ptr) AccessChain 43(i.val) 29
              46:    7(fvec3) Load 45
              47:     35(ptr) AccessChain 40(i) 29 29
                              Store 47 46
              49:     44(ptr) AccessChain 43(i.val) 48
              50:    7(fvec3) Load 49
              51:     35(ptr) AccessChain 40(i) 48 29
                              Store 51 50
              53:     44(ptr) AccessChain 43(i.val) 52
              54:    7(fvec3) Load 53
              55:     35(ptr) AccessChain 40(i) 52 29
                              Store 55 54
              59:      9(int) Load 58(cpid)
                              Store 56(cpid) 59
              62:      9(int) Load 58(cpid)
              64:          11 Load 40(i)
                              Store 63(param) 64
              66:      9(int) Load 56(cpid)
                              Store 65(param) 66
              67:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 63(param) 65(param)
              68:    7(fvec3) CompositeExtract 67 0
              70:     69(ptr) AccessChain 61(@entryPointOutput.val) 62
                              Store 70 68
                              ControlBarrier 71 72 73
              74:      9(int) Load 58(cpid)
              76:    75(bool) IEqual 74 29
                              SelectionMerge 78 None
                              BranchConditional 76 77 78
              77:               Label
              83:          11   Load 81(i)
                                Store 82(param) 83
                                Store 84(param) 73
              85:14(hs_out_t)   FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 82(param) 84(param)
              86:     30(ptr)   AccessChain 80(pcf_out) 29
                                Store 86 85
              90:          11   Load 87(i)
                                Store 89(param) 90
                                Store 91(param) 88
              92:14(hs_out_t)   FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 89(param) 91(param)
              93:     30(ptr)   AccessChain 80(pcf_out) 48
                                Store 93 92
              96:          11   Load 94(i)
                                Store 95(param) 96
                                Store 97(param) 71
              98:14(hs_out_t)   FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 95(param) 97(param)
              99:     30(ptr)   AccessChain 80(pcf_out) 52
                                Store 99 98
             102:          20   Load 80(pcf_out)
             103:          11   Load 40(i)
             104:22(hs_pcf_t)   FunctionCall 26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];) 102 103
                                Store 101(@patchConstantResult) 104
             109:    108(ptr)   AccessChain 101(@patchConstantResult) 29 29
             110:    6(float)   Load 109
             112:    111(ptr)   AccessChain 107(@patchConstantOutput.tfactor) 29
                                Store 112 110
             113:    108(ptr)   AccessChain 101(@patchConstantResult) 29 48
             114:    6(float)   Load 113
             115:    111(ptr)   AccessChain 107(@patchConstantOutput.tfactor) 48
                                Store 115 114
             116:    108(ptr)   AccessChain 101(@patchConstantResult) 29 52
             117:    6(float)   Load 116
             118:    111(ptr)   AccessChain 107(@patchConstantOutput.tfactor) 52
                                Store 118 117
             122:    108(ptr)   AccessChain 101(@patchConstantResult) 48
             123:    6(float)   Load 122
             124:    111(ptr)   AccessChain 121(@patchConstantOutput.flInFactor) 29
                                Store 124 123
                                Branch 78
              78:             Label
                              Return
                              FunctionEnd
18(@main(struct-hs_in_t-vf31[3];u1;):14(hs_out_t) Function None 15
           16(i):     12(ptr) FunctionParameter
        17(cpid):     13(ptr) FunctionParameter
              19:             Label
           31(o):     30(ptr) Variable Function
              32:      9(int) Load 17(cpid)
              33:    6(float) ConvertUToF 32
              34:    7(fvec3) CompositeConstruct 33 33 33
              36:     35(ptr) AccessChain 31(o) 29
                              Store 36 34
              37:14(hs_out_t) Load 31(o)
                              ReturnValue 37
                              FunctionEnd
26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];):22(hs_pcf_t) Function None 23
     24(pcf_out):          20 FunctionParameter
      25(pcf_in):          11 FunctionParameter
              27:             Label
          125(o):    100(ptr) Variable Function
             126:    6(float) CompositeExtract 24(pcf_out) 0 0 0
             127:    108(ptr) AccessChain 125(o) 29 29
                              Store 127 126
             128:    6(float) CompositeExtract 24(pcf_out) 1 0 0
             129:    108(ptr) AccessChain 125(o) 29 48
                              Store 129 128
             130:    6(float) CompositeExtract 24(pcf_out) 2 0 0
             131:    108(ptr) AccessChain 125(o) 29 52
                              Store 131 130
             133:    108(ptr) AccessChain 125(o) 48
                              Store 133 132
             134:22(hs_pcf_t) Load 125(o)
                              ReturnValue 134
                              FunctionEnd
