hlsl.domain.2.tese
Shader version: 500
input primitive = triangles
vertex spacing = none
triangle order = none
0:? Sequence
0:25  Function Definition: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25    Function Parameters: 
0:25      'pcf_data' ( in structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25      'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25      'tesscoord' ( in 3-component vector of float)
0:?     Sequence
0:28      move second child to first child ( temp 4-component vector of float)
0:28        pos: direct index for structure ( temp 4-component vector of float)
0:28          'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:28          Constant:
0:28            0 (const int)
0:28        add ( temp 4-component vector of float)
0:28          pos: direct index for structure ( temp 4-component vector of float)
0:28            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:28              'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:28              Constant:
0:28                0 (const int)
0:28            Constant:
0:28              0 (const int)
0:28          direct index ( temp float)
0:28            'tesscoord' ( in 3-component vector of float)
0:28            Constant:
0:28              0 (const int)
0:29      move second child to first child ( temp 3-component vector of float)
0:29        norm: direct index for structure ( temp 3-component vector of float)
0:29          'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:29          Constant:
0:29            1 (const int)
0:29        add ( temp 3-component vector of float)
0:29          norm: direct index for structure ( temp 3-component vector of float)
0:29            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:29              'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:29              Constant:
0:29                0 (const int)
0:29            Constant:
0:29              1 (const int)
0:29          direct index ( temp float)
0:29            'tesscoord' ( in 3-component vector of float)
0:29            Constant:
0:29              1 (const int)
0:31      direct index ( temp float)
0:31        'tesscoord' ( in 3-component vector of float)
0:31        Constant:
0:31          2 (const int)
0:33      Branch: Return with expression
0:33        'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25  Function Definition: main( ( temp void)
0:25    Function Parameters: 
0:?     Sequence
0:25      Sequence
0:25        move second child to first child ( temp float)
0:25          direct index ( temp float)
0:25            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              0 (const int)
0:25          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:25            Constant:
0:25              0 (const int)
0:25        move second child to first child ( temp float)
0:25          direct index ( temp float)
0:25            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              1 (const int)
0:25          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:25            Constant:
0:25              1 (const int)
0:25        move second child to first child ( temp float)
0:25          direct index ( temp float)
0:25            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              2 (const int)
0:25          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:25            Constant:
0:25              2 (const int)
0:25        move second child to first child ( temp float)
0:25          flInsideTessFactor: direct index for structure ( temp float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25            Constant:
0:25              1 (const int)
0:25          direct index ( patch in float TessLevelInner)
0:?             'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:25            Constant:
0:25              0 (const int)
0:25        move second child to first child ( temp float)
0:25          foo: direct index for structure ( temp float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25            Constant:
0:25              2 (const int)
0:?           'pcf_data.foo' (layout( location=2) patch in float)
0:25      Sequence
0:25        move second child to first child ( temp 4-component vector of float)
0:25          pos: direct index for structure ( temp 4-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              0 (const int)
0:25          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25            Constant:
0:25              0 (const int)
0:25        move second child to first child ( temp 3-component vector of float)
0:25          norm: direct index for structure ( temp 3-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              1 (const int)
0:25          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25            Constant:
0:25              0 (const int)
0:25        move second child to first child ( temp 4-component vector of float)
0:25          pos: direct index for structure ( temp 4-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                1 (const int)
0:25            Constant:
0:25              0 (const int)
0:25          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25            Constant:
0:25              1 (const int)
0:25        move second child to first child ( temp 3-component vector of float)
0:25          norm: direct index for structure ( temp 3-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                1 (const int)
0:25            Constant:
0:25              1 (const int)
0:25          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25            Constant:
0:25              1 (const int)
0:25        move second child to first child ( temp 4-component vector of float)
0:25          pos: direct index for structure ( temp 4-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                2 (const int)
0:25            Constant:
0:25              0 (const int)
0:25          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25            Constant:
0:25              2 (const int)
0:25        move second child to first child ( temp 3-component vector of float)
0:25          norm: direct index for structure ( temp 3-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                2 (const int)
0:25            Constant:
0:25              1 (const int)
0:25          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25            Constant:
0:25              2 (const int)
0:25      move second child to first child ( temp 3-component vector of float)
0:?         'tesscoord' ( temp 3-component vector of float)
0:?         'tesscoord' ( patch in 3-component vector of float TessCoord)
0:25      Sequence
0:25        move second child to first child ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25          'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25          Function Call: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:?             'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'tesscoord' ( temp 3-component vector of float)
0:25        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:25          pos: direct index for structure ( temp 4-component vector of float)
0:25            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25            Constant:
0:25              0 (const int)
0:25        move second child to first child ( temp 3-component vector of float)
0:?           '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:25          norm: direct index for structure ( temp 3-component vector of float)
0:25            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25            Constant:
0:25              1 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:?     '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:?     'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:?     'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:?     'tesscoord' ( patch in 3-component vector of float TessCoord)
0:?     'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:?     'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:?     'pcf_data.foo' (layout( location=2) patch in float)


Linked tessellation evaluation stage:


Shader version: 500
input primitive = triangles
vertex spacing = none
triangle order = none
0:? Sequence
0:25  Function Definition: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25    Function Parameters: 
0:25      'pcf_data' ( in structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25      'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25      'tesscoord' ( in 3-component vector of float)
0:?     Sequence
0:28      move second child to first child ( temp 4-component vector of float)
0:28        pos: direct index for structure ( temp 4-component vector of float)
0:28          'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:28          Constant:
0:28            0 (const int)
0:28        add ( temp 4-component vector of float)
0:28          pos: direct index for structure ( temp 4-component vector of float)
0:28            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:28              'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:28              Constant:
0:28                0 (const int)
0:28            Constant:
0:28              0 (const int)
0:28          direct index ( temp float)
0:28            'tesscoord' ( in 3-component vector of float)
0:28            Constant:
0:28              0 (const int)
0:29      move second child to first child ( temp 3-component vector of float)
0:29        norm: direct index for structure ( temp 3-component vector of float)
0:29          'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:29          Constant:
0:29            1 (const int)
0:29        add ( temp 3-component vector of float)
0:29          norm: direct index for structure ( temp 3-component vector of float)
0:29            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:29              'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:29              Constant:
0:29                0 (const int)
0:29            Constant:
0:29              1 (const int)
0:29          direct index ( temp float)
0:29            'tesscoord' ( in 3-component vector of float)
0:29            Constant:
0:29              1 (const int)
0:31      direct index ( temp float)
0:31        'tesscoord' ( in 3-component vector of float)
0:31        Constant:
0:31          2 (const int)
0:33      Branch: Return with expression
0:33        'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25  Function Definition: main( ( temp void)
0:25    Function Parameters: 
0:?     Sequence
0:25      Sequence
0:25        move second child to first child ( temp float)
0:25          direct index ( temp float)
0:25            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              0 (const int)
0:25          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:25            Constant:
0:25              0 (const int)
0:25        move second child to first child ( temp float)
0:25          direct index ( temp float)
0:25            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              1 (const int)
0:25          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:25            Constant:
0:25              1 (const int)
0:25        move second child to first child ( temp float)
0:25          direct index ( temp float)
0:25            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              2 (const int)
0:25          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:25            Constant:
0:25              2 (const int)
0:25        move second child to first child ( temp float)
0:25          flInsideTessFactor: direct index for structure ( temp float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25            Constant:
0:25              1 (const int)
0:25          direct index ( patch in float TessLevelInner)
0:?             'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:25            Constant:
0:25              0 (const int)
0:25        move second child to first child ( temp float)
0:25          foo: direct index for structure ( temp float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:25            Constant:
0:25              2 (const int)
0:?           'pcf_data.foo' (layout( location=2) patch in float)
0:25      Sequence
0:25        move second child to first child ( temp 4-component vector of float)
0:25          pos: direct index for structure ( temp 4-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              0 (const int)
0:25          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25            Constant:
0:25              0 (const int)
0:25        move second child to first child ( temp 3-component vector of float)
0:25          norm: direct index for structure ( temp 3-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              1 (const int)
0:25          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25            Constant:
0:25              0 (const int)
0:25        move second child to first child ( temp 4-component vector of float)
0:25          pos: direct index for structure ( temp 4-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                1 (const int)
0:25            Constant:
0:25              0 (const int)
0:25          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25            Constant:
0:25              1 (const int)
0:25        move second child to first child ( temp 3-component vector of float)
0:25          norm: direct index for structure ( temp 3-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                1 (const int)
0:25            Constant:
0:25              1 (const int)
0:25          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25            Constant:
0:25              1 (const int)
0:25        move second child to first child ( temp 4-component vector of float)
0:25          pos: direct index for structure ( temp 4-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                2 (const int)
0:25            Constant:
0:25              0 (const int)
0:25          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25            Constant:
0:25              2 (const int)
0:25        move second child to first child ( temp 3-component vector of float)
0:25          norm: direct index for structure ( temp 3-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                2 (const int)
0:25            Constant:
0:25              1 (const int)
0:25          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25            Constant:
0:25              2 (const int)
0:25      move second child to first child ( temp 3-component vector of float)
0:?         'tesscoord' ( temp 3-component vector of float)
0:?         'tesscoord' ( patch in 3-component vector of float TessCoord)
0:25      Sequence
0:25        move second child to first child ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25          'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25          Function Call: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor,  temp float foo})
0:?             'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'tesscoord' ( temp 3-component vector of float)
0:25        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:25          pos: direct index for structure ( temp 4-component vector of float)
0:25            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25            Constant:
0:25              0 (const int)
0:25        move second child to first child ( temp 3-component vector of float)
0:?           '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:25          norm: direct index for structure ( temp 3-component vector of float)
0:25            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25            Constant:
0:25              1 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:?     '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:?     'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:?     'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:?     'tesscoord' ( patch in 3-component vector of float TessCoord)
0:?     'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:?     'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:?     'pcf_data.foo' (layout( location=2) patch in float)

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

                              Capability Tessellation
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationEvaluation 4  "main" 52 67 71 78 85 103 113 117
                              ExecutionMode 4 Triangles
                              Source HLSL 500
                              Name 4  "main"
                              Name 10  "pcf_in_t"
                              MemberName 10(pcf_in_t) 0  "flTessFactor"
                              MemberName 10(pcf_in_t) 1  "flInsideTessFactor"
                              MemberName 10(pcf_in_t) 2  "foo"
                              Name 14  "ds_in_t"
                              MemberName 14(ds_in_t) 0  "pos"
                              MemberName 14(ds_in_t) 1  "norm"
                              Name 17  "gs_in_t"
                              MemberName 17(gs_in_t) 0  "pos"
                              MemberName 17(gs_in_t) 1  "norm"
                              Name 22  "@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;"
                              Name 19  "pcf_data"
                              Name 20  "i"
                              Name 21  "tesscoord"
                              Name 25  "o"
                              Name 48  "pcf_data"
                              Name 52  "pcf_data.flTessFactor"
                              Name 67  "pcf_data.flInsideTessFactor"
                              Name 71  "pcf_data.foo"
                              Name 75  "i"
                              Name 78  "i.pos"
                              Name 85  "i.norm"
                              Name 102  "tesscoord"
                              Name 103  "tesscoord"
                              Name 105  "flattenTemp"
                              Name 107  "param"
                              Name 109  "param"
                              Name 113  "@entryPointOutput.pos"
                              Name 117  "@entryPointOutput.norm"
                              Decorate 52(pcf_data.flTessFactor) Patch
                              Decorate 52(pcf_data.flTessFactor) BuiltIn TessLevelOuter
                              Decorate 67(pcf_data.flInsideTessFactor) Patch
                              Decorate 67(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner
                              Decorate 71(pcf_data.foo) Patch
                              Decorate 71(pcf_data.foo) Location 2
                              Decorate 78(i.pos) Location 0
                              Decorate 85(i.norm) Location 1
                              Decorate 103(tesscoord) Patch
                              Decorate 103(tesscoord) BuiltIn TessCoord
                              Decorate 113(@entryPointOutput.pos) Location 0
                              Decorate 117(@entryPointOutput.norm) Location 1
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeInt 32 0
               8:      7(int) Constant 3
               9:             TypeArray 6(float) 8
    10(pcf_in_t):             TypeStruct 9 6(float) 6(float)
              11:             TypePointer Function 10(pcf_in_t)
              12:             TypeVector 6(float) 4
              13:             TypeVector 6(float) 3
     14(ds_in_t):             TypeStruct 12(fvec4) 13(fvec3)
              15:             TypeArray 14(ds_in_t) 8
              16:             TypePointer Function 13(fvec3)
     17(gs_in_t):             TypeStruct 12(fvec4) 13(fvec3)
              18:             TypeFunction 17(gs_in_t) 11(ptr) 15 16(ptr)
              24:             TypePointer Function 17(gs_in_t)
              26:             TypeInt 32 1
              27:     26(int) Constant 0
              29:      7(int) Constant 0
              30:             TypePointer Function 6(float)
              35:             TypePointer Function 12(fvec4)
              37:     26(int) Constant 1
              39:      7(int) Constant 1
              49:      7(int) Constant 4
              50:             TypeArray 6(float) 49
              51:             TypePointer Input 50
52(pcf_data.flTessFactor):     51(ptr) Variable Input
              53:             TypePointer Input 6(float)
              60:     26(int) Constant 2
              64:      7(int) Constant 2
              65:             TypeArray 6(float) 64
              66:             TypePointer Input 65
67(pcf_data.flInsideTessFactor):     66(ptr) Variable Input
71(pcf_data.foo):     53(ptr) Variable Input
              74:             TypePointer Function 15
              76:             TypeArray 12(fvec4) 8
              77:             TypePointer Input 76
       78(i.pos):     77(ptr) Variable Input
              79:             TypePointer Input 12(fvec4)
              83:             TypeArray 13(fvec3) 8
              84:             TypePointer Input 83
      85(i.norm):     84(ptr) Variable Input
              86:             TypePointer Input 13(fvec3)
  103(tesscoord):     86(ptr) Variable Input
             112:             TypePointer Output 12(fvec4)
113(@entryPointOutput.pos):    112(ptr) Variable Output
             116:             TypePointer Output 13(fvec3)
117(@entryPointOutput.norm):    116(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
    48(pcf_data):     11(ptr) Variable Function
           75(i):     74(ptr) Variable Function
  102(tesscoord):     16(ptr) Variable Function
105(flattenTemp):     24(ptr) Variable Function
      107(param):     11(ptr) Variable Function
      109(param):     16(ptr) Variable Function
              54:     53(ptr) AccessChain 52(pcf_data.flTessFactor) 27
              55:    6(float) Load 54
              56:     30(ptr) AccessChain 48(pcf_data) 27 27
                              Store 56 55
              57:     53(ptr) AccessChain 52(pcf_data.flTessFactor) 37
              58:    6(float) Load 57
              59:     30(ptr) AccessChain 48(pcf_data) 27 37
                              Store 59 58
              61:     53(ptr) AccessChain 52(pcf_data.flTessFactor) 60
              62:    6(float) Load 61
              63:     30(ptr) AccessChain 48(pcf_data) 27 60
                              Store 63 62
              68:     53(ptr) AccessChain 67(pcf_data.flInsideTessFactor) 27
              69:    6(float) Load 68
              70:     30(ptr) AccessChain 48(pcf_data) 37
                              Store 70 69
              72:    6(float) Load 71(pcf_data.foo)
              73:     30(ptr) AccessChain 48(pcf_data) 60
                              Store 73 72
              80:     79(ptr) AccessChain 78(i.pos) 27
              81:   12(fvec4) Load 80
              82:     35(ptr) AccessChain 75(i) 27 27
                              Store 82 81
              87:     86(ptr) AccessChain 85(i.norm) 27
              88:   13(fvec3) Load 87
              89:     16(ptr) AccessChain 75(i) 27 37
                              Store 89 88
              90:     79(ptr) AccessChain 78(i.pos) 37
              91:   12(fvec4) Load 90
              92:     35(ptr) AccessChain 75(i) 37 27
                              Store 92 91
              93:     86(ptr) AccessChain 85(i.norm) 37
              94:   13(fvec3) Load 93
              95:     16(ptr) AccessChain 75(i) 37 37
                              Store 95 94
              96:     79(ptr) AccessChain 78(i.pos) 60
              97:   12(fvec4) Load 96
              98:     35(ptr) AccessChain 75(i) 60 27
                              Store 98 97
              99:     86(ptr) AccessChain 85(i.norm) 60
             100:   13(fvec3) Load 99
             101:     16(ptr) AccessChain 75(i) 60 37
                              Store 101 100
             104:   13(fvec3) Load 103(tesscoord)
                              Store 102(tesscoord) 104
             106:          15 Load 75(i)
             108:10(pcf_in_t) Load 48(pcf_data)
                              Store 107(param) 108
             110:   13(fvec3) Load 102(tesscoord)
                              Store 109(param) 110
             111: 17(gs_in_t) FunctionCall 22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;) 107(param) 106 109(param)
                              Store 105(flattenTemp) 111
             114:     35(ptr) AccessChain 105(flattenTemp) 27
             115:   12(fvec4) Load 114
                              Store 113(@entryPointOutput.pos) 115
             118:     16(ptr) AccessChain 105(flattenTemp) 37
             119:   13(fvec3) Load 118
                              Store 117(@entryPointOutput.norm) 119
                              Return
                              FunctionEnd
22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;): 17(gs_in_t) Function None 18
    19(pcf_data):     11(ptr) FunctionParameter
           20(i):          15 FunctionParameter
   21(tesscoord):     16(ptr) FunctionParameter
              23:             Label
           25(o):     24(ptr) Variable Function
              28:   12(fvec4) CompositeExtract 20(i) 0 0
              31:     30(ptr) AccessChain 21(tesscoord) 29
              32:    6(float) Load 31
              33:   12(fvec4) CompositeConstruct 32 32 32 32
              34:   12(fvec4) FAdd 28 33
              36:     35(ptr) AccessChain 25(o) 27
                              Store 36 34
              38:   13(fvec3) CompositeExtract 20(i) 0 1
              40:     30(ptr) AccessChain 21(tesscoord) 39
              41:    6(float) Load 40
              42:   13(fvec3) CompositeConstruct 41 41 41
              43:   13(fvec3) FAdd 38 42
              44:     16(ptr) AccessChain 25(o) 37
                              Store 44 43
              45: 17(gs_in_t) Load 25(o)
                              ReturnValue 45
                              FunctionEnd
