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      move second child to first child ( 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:?         'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
0:28      move second child to first child ( temp uint)
0:?         'cpid' ( temp uint)
0:?         'cpid' ( in uint InvocationID)
0:28      move second child to first child ( temp structure{ temp 3-component vector of float val})
0:28        indirect index (layout( location=0) out structure{ temp 3-component vector of float val})
0:?           '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
0:?           'cpid' ( in uint InvocationID)
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:?       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' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
0:?     'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
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      move second child to first child ( 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:?         'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
0:28      move second child to first child ( temp uint)
0:?         'cpid' ( temp uint)
0:?         'cpid' ( in uint InvocationID)
0:28      move second child to first child ( temp structure{ temp 3-component vector of float val})
0:28        indirect index (layout( location=0) out structure{ temp 3-component vector of float val})
0:?           '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
0:?           'cpid' ( in uint InvocationID)
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:?       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' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val})
0:?     'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val})
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): 80008
// Id's are bound by 126

                              Capability Tessellation
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationControl 4  "main" 42 46 49 96 110
                              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 42  "i"
                              Name 44  "cpid"
                              Name 46  "cpid"
                              Name 49  "@entryPointOutput"
                              Name 51  "param"
                              Name 53  "param"
                              Name 67  "pcf_out"
                              Name 68  "i"
                              Name 69  "param"
                              Name 71  "param"
                              Name 75  "i"
                              Name 77  "param"
                              Name 79  "param"
                              Name 83  "i"
                              Name 84  "param"
                              Name 86  "param"
                              Name 90  "@patchConstantResult"
                              Name 96  "@patchConstantOutput.tfactor"
                              Name 110  "@patchConstantOutput.flInFactor"
                              Name 114  "o"
                              Decorate 42(i) Location 0
                              Decorate 46(cpid) BuiltIn InvocationId
                              Decorate 49(@entryPointOutput) Location 0
                              Decorate 96(@patchConstantOutput.tfactor) Patch
                              Decorate 96(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter
                              Decorate 110(@patchConstantOutput.flInFactor) Patch
                              Decorate 110(@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:             TypePointer Input 11
           42(i):     41(ptr) Variable Input
              45:             TypePointer Input 9(int)
        46(cpid):     45(ptr) Variable Input
              48:             TypePointer Output 20
49(@entryPointOutput):     48(ptr) Variable Output
              56:             TypePointer Output 14(hs_out_t)
              58:      9(int) Constant 2
              59:      9(int) Constant 4
              60:      9(int) Constant 0
              62:             TypeBool
              66:             TypePointer Function 20
              74:     28(int) Constant 1
              76:      9(int) Constant 1
              82:     28(int) Constant 2
              89:             TypePointer Function 22(hs_pcf_t)
              94:             TypeArray 6(float) 59
              95:             TypePointer Output 94
96(@patchConstantOutput.tfactor):     95(ptr) Variable Output
              97:             TypePointer Function 6(float)
             100:             TypePointer Output 6(float)
             108:             TypeArray 6(float) 58
             109:             TypePointer Output 108
110(@patchConstantOutput.flInFactor):    109(ptr) Variable Output
             121:    6(float) Constant 1082130432
         4(main):           2 Function None 3
               5:             Label
           40(i):     12(ptr) Variable Function
        44(cpid):     13(ptr) Variable Function
       51(param):     12(ptr) Variable Function
       53(param):     13(ptr) Variable Function
     67(pcf_out):     66(ptr) Variable Function
           68(i):     12(ptr) Variable Function
       69(param):     12(ptr) Variable Function
       71(param):     13(ptr) Variable Function
           75(i):     12(ptr) Variable Function
       77(param):     12(ptr) Variable Function
       79(param):     13(ptr) Variable Function
           83(i):     12(ptr) Variable Function
       84(param):     12(ptr) Variable Function
       86(param):     13(ptr) Variable Function
90(@patchConstantResult):     89(ptr) Variable Function
              43:          11 Load 42(i)
                              Store 40(i) 43
              47:      9(int) Load 46(cpid)
                              Store 44(cpid) 47
              50:      9(int) Load 46(cpid)
              52:          11 Load 40(i)
                              Store 51(param) 52
              54:      9(int) Load 44(cpid)
                              Store 53(param) 54
              55:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 51(param) 53(param)
              57:     56(ptr) AccessChain 49(@entryPointOutput) 50
                              Store 57 55
                              ControlBarrier 58 59 60
              61:      9(int) Load 46(cpid)
              63:    62(bool) IEqual 61 29
                              SelectionMerge 65 None
                              BranchConditional 63 64 65
              64:               Label
              70:          11   Load 68(i)
                                Store 69(param) 70
                                Store 71(param) 60
              72:14(hs_out_t)   FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 69(param) 71(param)
              73:     30(ptr)   AccessChain 67(pcf_out) 29
                                Store 73 72
              78:          11   Load 75(i)
                                Store 77(param) 78
                                Store 79(param) 76
              80:14(hs_out_t)   FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 77(param) 79(param)
              81:     30(ptr)   AccessChain 67(pcf_out) 74
                                Store 81 80
              85:          11   Load 83(i)
                                Store 84(param) 85
                                Store 86(param) 58
              87:14(hs_out_t)   FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 84(param) 86(param)
              88:     30(ptr)   AccessChain 67(pcf_out) 82
                                Store 88 87
              91:          20   Load 67(pcf_out)
              92:          11   Load 40(i)
              93:22(hs_pcf_t)   FunctionCall 26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];) 91 92
                                Store 90(@patchConstantResult) 93
              98:     97(ptr)   AccessChain 90(@patchConstantResult) 29 29
              99:    6(float)   Load 98
             101:    100(ptr)   AccessChain 96(@patchConstantOutput.tfactor) 29
                                Store 101 99
             102:     97(ptr)   AccessChain 90(@patchConstantResult) 29 74
             103:    6(float)   Load 102
             104:    100(ptr)   AccessChain 96(@patchConstantOutput.tfactor) 74
                                Store 104 103
             105:     97(ptr)   AccessChain 90(@patchConstantResult) 29 82
             106:    6(float)   Load 105
             107:    100(ptr)   AccessChain 96(@patchConstantOutput.tfactor) 82
                                Store 107 106
             111:     97(ptr)   AccessChain 90(@patchConstantResult) 74
             112:    6(float)   Load 111
             113:    100(ptr)   AccessChain 110(@patchConstantOutput.flInFactor) 29
                                Store 113 112
                                Branch 65
              65:             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
          114(o):     89(ptr) Variable Function
             115:    6(float) CompositeExtract 24(pcf_out) 0 0 0
             116:     97(ptr) AccessChain 114(o) 29 29
                              Store 116 115
             117:    6(float) CompositeExtract 24(pcf_out) 1 0 0
             118:     97(ptr) AccessChain 114(o) 29 74
                              Store 118 117
             119:    6(float) CompositeExtract 24(pcf_out) 2 0 0
             120:     97(ptr) AccessChain 114(o) 29 82
                              Store 120 119
             122:     97(ptr) AccessChain 114(o) 74
                              Store 122 121
             123:22(hs_pcf_t) Load 114(o)
                              ReturnValue 123
                              FunctionEnd
