hlsl.domain.3.tese
Shader version: 500
input primitive = isolines
vertex spacing = none
triangle order = none
0:? Sequence
0:24  Function Definition: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24    Function Parameters: 
0:24      'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24      'tesscoord' ( in 2-component vector of float)
0:24      'pcf_data' ( in structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:?     Sequence
0:27      move second child to first child ( temp 4-component vector of float)
0:27        pos: direct index for structure ( temp 4-component vector of float)
0:27          'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:27          Constant:
0:27            0 (const int)
0:27        add ( temp 4-component vector of float)
0:27          pos: direct index for structure ( temp 4-component vector of float)
0:27            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:27              'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:27              Constant:
0:27                0 (const int)
0:27            Constant:
0:27              0 (const int)
0:27          direct index ( temp float)
0:27            'tesscoord' ( in 2-component vector of float)
0:27            Constant:
0:27              0 (const int)
0:28      move second child to first child ( temp 3-component vector of float)
0:28        norm: direct index for structure ( temp 3-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            1 (const int)
0:28        add ( temp 3-component vector of float)
0:28          norm: direct index for structure ( temp 3-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) 2-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              1 (const int)
0:28          direct index ( temp float)
0:28            'tesscoord' ( in 2-component vector of float)
0:28            Constant:
0:28              1 (const int)
0:30      Branch: Return with expression
0:30        'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24  Function Definition: main( ( temp void)
0:24    Function Parameters: 
0:?     Sequence
0:24      Sequence
0:24        move second child to first child ( temp 4-component vector of float)
0:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 2-element array of 4-component vector of float)
0:24            Constant:
0:24              0 (const int)
0:24        move second child to first child ( temp 3-component vector of float)
0:24          norm: direct index for structure ( temp 3-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 2-element array of 3-component vector of float)
0:24            Constant:
0:24              0 (const int)
0:24        move second child to first child ( temp 4-component vector of float)
0:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24              Constant:
0:24                1 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 2-element array of 4-component vector of float)
0:24            Constant:
0:24              1 (const int)
0:24        move second child to first child ( temp 3-component vector of float)
0:24          norm: direct index for structure ( temp 3-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24              Constant:
0:24                1 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 2-element array of 3-component vector of float)
0:24            Constant:
0:24              1 (const int)
0:24      move second child to first child ( temp 2-component vector of float)
0:?         'tesscoord' ( temp 2-component vector of float)
0:?         Construct vec2 ( temp 2-component vector of float)
0:?           'tesscoord' ( patch in 3-component vector of float TessCoord)
0:24      Sequence
0:24        move second child to first child ( temp float)
0:24          direct index ( temp float)
0:24            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})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:24            Constant:
0:24              0 (const int)
0:24        move second child to first child ( temp float)
0:24          direct index ( temp float)
0:24            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})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:24            Constant:
0:24              1 (const int)
0:24        move second child to first child ( temp float)
0:24          direct index ( temp float)
0:24            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})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              2 (const int)
0:24          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:24            Constant:
0:24              2 (const int)
0:24        move second child to first child ( temp float)
0:24          flInsideTessFactor: direct index for structure ( temp float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:24            Constant:
0:24              1 (const int)
0:24          direct index ( patch in float TessLevelInner)
0:?             'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:24            Constant:
0:24              0 (const int)
0:24      Sequence
0:24        move second child to first child ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24          'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24          Function Call: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'i' ( temp 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'tesscoord' ( temp 2-component vector of float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:24        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:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24            Constant:
0:24              0 (const int)
0:24        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:24          norm: direct index for structure ( temp 3-component vector of float)
0:24            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24            Constant:
0:24              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 2-element array of 4-component vector of float)
0:?     'i.norm' (layout( location=1) in 2-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)


Linked tessellation evaluation stage:


Shader version: 500
input primitive = isolines
vertex spacing = none
triangle order = none
0:? Sequence
0:24  Function Definition: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24    Function Parameters: 
0:24      'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24      'tesscoord' ( in 2-component vector of float)
0:24      'pcf_data' ( in structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:?     Sequence
0:27      move second child to first child ( temp 4-component vector of float)
0:27        pos: direct index for structure ( temp 4-component vector of float)
0:27          'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:27          Constant:
0:27            0 (const int)
0:27        add ( temp 4-component vector of float)
0:27          pos: direct index for structure ( temp 4-component vector of float)
0:27            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:27              'i' ( const (read only) 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:27              Constant:
0:27                0 (const int)
0:27            Constant:
0:27              0 (const int)
0:27          direct index ( temp float)
0:27            'tesscoord' ( in 2-component vector of float)
0:27            Constant:
0:27              0 (const int)
0:28      move second child to first child ( temp 3-component vector of float)
0:28        norm: direct index for structure ( temp 3-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            1 (const int)
0:28        add ( temp 3-component vector of float)
0:28          norm: direct index for structure ( temp 3-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) 2-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              1 (const int)
0:28          direct index ( temp float)
0:28            'tesscoord' ( in 2-component vector of float)
0:28            Constant:
0:28              1 (const int)
0:30      Branch: Return with expression
0:30        'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24  Function Definition: main( ( temp void)
0:24    Function Parameters: 
0:?     Sequence
0:24      Sequence
0:24        move second child to first child ( temp 4-component vector of float)
0:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 2-element array of 4-component vector of float)
0:24            Constant:
0:24              0 (const int)
0:24        move second child to first child ( temp 3-component vector of float)
0:24          norm: direct index for structure ( temp 3-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 2-element array of 3-component vector of float)
0:24            Constant:
0:24              0 (const int)
0:24        move second child to first child ( temp 4-component vector of float)
0:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24              Constant:
0:24                1 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 2-element array of 4-component vector of float)
0:24            Constant:
0:24              1 (const int)
0:24        move second child to first child ( temp 3-component vector of float)
0:24          norm: direct index for structure ( temp 3-component vector of float)
0:24            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?               'i' ( temp 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24              Constant:
0:24                1 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 2-element array of 3-component vector of float)
0:24            Constant:
0:24              1 (const int)
0:24      move second child to first child ( temp 2-component vector of float)
0:?         'tesscoord' ( temp 2-component vector of float)
0:?         Construct vec2 ( temp 2-component vector of float)
0:?           'tesscoord' ( patch in 3-component vector of float TessCoord)
0:24      Sequence
0:24        move second child to first child ( temp float)
0:24          direct index ( temp float)
0:24            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})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              0 (const int)
0:24          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:24            Constant:
0:24              0 (const int)
0:24        move second child to first child ( temp float)
0:24          direct index ( temp float)
0:24            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})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              1 (const int)
0:24          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:24            Constant:
0:24              1 (const int)
0:24        move second child to first child ( temp float)
0:24          direct index ( temp float)
0:24            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})
0:24              Constant:
0:24                0 (const int)
0:24            Constant:
0:24              2 (const int)
0:24          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:24            Constant:
0:24              2 (const int)
0:24        move second child to first child ( temp float)
0:24          flInsideTessFactor: direct index for structure ( temp float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:24            Constant:
0:24              1 (const int)
0:24          direct index ( patch in float TessLevelInner)
0:?             'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:24            Constant:
0:24              0 (const int)
0:24      Sequence
0:24        move second child to first child ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24          'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24          Function Call: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'i' ( temp 2-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'tesscoord' ( temp 2-component vector of float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:24        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:24          pos: direct index for structure ( temp 4-component vector of float)
0:24            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24            Constant:
0:24              0 (const int)
0:24        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:24          norm: direct index for structure ( temp 3-component vector of float)
0:24            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:24            Constant:
0:24              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 2-element array of 4-component vector of float)
0:?     'i.norm' (layout( location=1) in 2-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)

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

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