hlsl.hull.1.tesc
Shader version: 500
vertices = 4
vertex spacing = equal_spacing
0:? Sequence
0:26  Function Definition: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
0:26    Function Parameters: 
0:26      'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
0:26      'm_cpid' ( in uint)
0:?     Sequence
0:28      move second child to first child ( temp 3-component vector of float)
0:28        cpoint: direct index for structure ( temp 3-component vector of float)
0:28          'output' ( temp structure{ temp 3-component vector of float cpoint})
0:28          Constant:
0:28            0 (const int)
0:28        cpoint: direct index for structure ( temp 3-component vector of float)
0:28          direct index ( temp structure{ temp 3-component vector of float cpoint})
0:28            'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
0:28            Constant:
0:28              0 (const int)
0:28          Constant:
0:28            0 (const int)
0:29      Branch: Return with expression
0:29        'output' ( temp structure{ temp 3-component vector of float cpoint})
0:26  Function Definition: main( ( temp void)
0:26    Function Parameters: 
0:?     Sequence
0:26      move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:?         'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:?         'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
0:26      move second child to first child ( temp uint)
0:?         'm_cpid' ( temp uint)
0:?         'm_cpid' ( in uint InvocationID)
0:26      move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
0:26        indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
0:?           '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
0:?           'm_cpid' ( in uint InvocationID)
0:26        Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
0:?           'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:?           'm_cpid' ( temp uint)
0:?       Barrier ( temp void)
0:?       Test condition and select ( temp void)
0:?         Condition
0:?         Compare Equal ( temp bool)
0:?           'm_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 2-element array of float edges})
0:?             '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
0:?             Function Call: PCF(u1; ( temp structure{ temp 2-element array of float edges})
0:?               'pid' ( in uint PrimitiveID)
0:?           Sequence
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   0 (const int)
0:?               direct index ( temp float)
0:?                 edges: direct index for structure ( temp 2-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
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.edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   1 (const int)
0:?               direct index ( temp float)
0:?                 edges: direct index for structure ( temp 2-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   1 (const int)
0:33  Function Definition: PCF(u1; ( temp structure{ temp 2-element array of float edges})
0:33    Function Parameters: 
0:33      'pid' ( in uint)
0:?     Sequence
0:36      move second child to first child ( temp float)
0:36        direct index ( temp float)
0:36          edges: direct index for structure ( temp 2-element array of float)
0:36            'output' ( temp structure{ temp 2-element array of float edges})
0:36            Constant:
0:36              0 (const int)
0:36          Constant:
0:36            0 (const int)
0:36        Constant:
0:36          2.000000
0:37      move second child to first child ( temp float)
0:37        direct index ( temp float)
0:37          edges: direct index for structure ( temp 2-element array of float)
0:37            'output' ( temp structure{ temp 2-element array of float edges})
0:37            Constant:
0:37              0 (const int)
0:37          Constant:
0:37            1 (const int)
0:37        Constant:
0:37          8.000000
0:38      Branch: Return with expression
0:38        'output' ( temp structure{ temp 2-element array of float edges})
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
0:?     'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
0:?     'm_cpid' ( in uint InvocationID)
0:?     'pid' ( in uint PrimitiveID)
0:?     '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)


Linked tessellation control stage:


Shader version: 500
vertices = 4
vertex spacing = equal_spacing
0:? Sequence
0:26  Function Definition: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
0:26    Function Parameters: 
0:26      'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
0:26      'm_cpid' ( in uint)
0:?     Sequence
0:28      move second child to first child ( temp 3-component vector of float)
0:28        cpoint: direct index for structure ( temp 3-component vector of float)
0:28          'output' ( temp structure{ temp 3-component vector of float cpoint})
0:28          Constant:
0:28            0 (const int)
0:28        cpoint: direct index for structure ( temp 3-component vector of float)
0:28          direct index ( temp structure{ temp 3-component vector of float cpoint})
0:28            'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
0:28            Constant:
0:28              0 (const int)
0:28          Constant:
0:28            0 (const int)
0:29      Branch: Return with expression
0:29        'output' ( temp structure{ temp 3-component vector of float cpoint})
0:26  Function Definition: main( ( temp void)
0:26    Function Parameters: 
0:?     Sequence
0:26      move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:?         'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:?         'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
0:26      move second child to first child ( temp uint)
0:?         'm_cpid' ( temp uint)
0:?         'm_cpid' ( in uint InvocationID)
0:26      move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
0:26        indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
0:?           '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
0:?           'm_cpid' ( in uint InvocationID)
0:26        Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
0:?           'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:?           'm_cpid' ( temp uint)
0:?       Barrier ( temp void)
0:?       Test condition and select ( temp void)
0:?         Condition
0:?         Compare Equal ( temp bool)
0:?           'm_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 2-element array of float edges})
0:?             '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
0:?             Function Call: PCF(u1; ( temp structure{ temp 2-element array of float edges})
0:?               'pid' ( in uint PrimitiveID)
0:?           Sequence
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   0 (const int)
0:?               direct index ( temp float)
0:?                 edges: direct index for structure ( temp 2-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
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.edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   1 (const int)
0:?               direct index ( temp float)
0:?                 edges: direct index for structure ( temp 2-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   1 (const int)
0:33  Function Definition: PCF(u1; ( temp structure{ temp 2-element array of float edges})
0:33    Function Parameters: 
0:33      'pid' ( in uint)
0:?     Sequence
0:36      move second child to first child ( temp float)
0:36        direct index ( temp float)
0:36          edges: direct index for structure ( temp 2-element array of float)
0:36            'output' ( temp structure{ temp 2-element array of float edges})
0:36            Constant:
0:36              0 (const int)
0:36          Constant:
0:36            0 (const int)
0:36        Constant:
0:36          2.000000
0:37      move second child to first child ( temp float)
0:37        direct index ( temp float)
0:37          edges: direct index for structure ( temp 2-element array of float)
0:37            'output' ( temp structure{ temp 2-element array of float edges})
0:37            Constant:
0:37              0 (const int)
0:37          Constant:
0:37            1 (const int)
0:37        Constant:
0:37          8.000000
0:38      Branch: Return with expression
0:38        'output' ( temp structure{ temp 2-element array of float edges})
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
0:?     'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
0:?     'm_cpid' ( in uint InvocationID)
0:?     'pid' ( in uint PrimitiveID)
0:?     '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)

// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 90

                              Capability Tessellation
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationControl 4  "main" 40 44 48 66 72
                              ExecutionMode 4 OutputVertices 4
                              ExecutionMode 4 Isolines
                              ExecutionMode 4 SpacingEqual
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "VS_OUT"
                              MemberName 8(VS_OUT) 0  "cpoint"
                              Name 14  "HS_OUT"
                              MemberName 14(HS_OUT) 0  "cpoint"
                              Name 18  "@main(struct-VS_OUT-vf31[4];u1;"
                              Name 16  "ip"
                              Name 17  "m_cpid"
                              Name 22  "HS_CONSTANT_OUT"
                              MemberName 22(HS_CONSTANT_OUT) 0  "edges"
                              Name 25  "PCF(u1;"
                              Name 24  "pid"
                              Name 28  "output"
                              Name 38  "ip"
                              Name 40  "ip"
                              Name 42  "m_cpid"
                              Name 44  "m_cpid"
                              Name 48  "@entryPointOutput"
                              Name 50  "param"
                              Name 52  "param"
                              Name 65  "@patchConstantResult"
                              Name 66  "pid"
                              Name 67  "param"
                              Name 72  "@patchConstantOutput.edges"
                              Name 82  "output"
                              Decorate 40(ip) Location 0
                              Decorate 44(m_cpid) BuiltIn InvocationId
                              Decorate 48(@entryPointOutput) Location 0
                              Decorate 66(pid) BuiltIn PrimitiveId
                              Decorate 72(@patchConstantOutput.edges) Patch
                              Decorate 72(@patchConstantOutput.edges) BuiltIn TessLevelOuter
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
       8(VS_OUT):             TypeStruct 7(fvec3)
               9:             TypeInt 32 0
              10:      9(int) Constant 4
              11:             TypeArray 8(VS_OUT) 10
              12:             TypePointer Function 11
              13:             TypePointer Function 9(int)
      14(HS_OUT):             TypeStruct 7(fvec3)
              15:             TypeFunction 14(HS_OUT) 12(ptr) 13(ptr)
              20:      9(int) Constant 2
              21:             TypeArray 6(float) 20
22(HS_CONSTANT_OUT):             TypeStruct 21
              23:             TypeFunction 22(HS_CONSTANT_OUT) 13(ptr)
              27:             TypePointer Function 14(HS_OUT)
              29:             TypeInt 32 1
              30:     29(int) Constant 0
              31:             TypePointer Function 7(fvec3)
              39:             TypePointer Input 11
          40(ip):     39(ptr) Variable Input
              43:             TypePointer Input 9(int)
      44(m_cpid):     43(ptr) Variable Input
              46:             TypeArray 14(HS_OUT) 10
              47:             TypePointer Output 46
48(@entryPointOutput):     47(ptr) Variable Output
              55:             TypePointer Output 14(HS_OUT)
              57:      9(int) Constant 1
              58:      9(int) Constant 0
              60:             TypeBool
              64:             TypePointer Function 22(HS_CONSTANT_OUT)
         66(pid):     43(ptr) Variable Input
              70:             TypeArray 6(float) 10
              71:             TypePointer Output 70
72(@patchConstantOutput.edges):     71(ptr) Variable Output
              73:             TypePointer Function 6(float)
              76:             TypePointer Output 6(float)
              78:     29(int) Constant 1
              83:    6(float) Constant 1073741824
              85:    6(float) Constant 1090519040
         4(main):           2 Function None 3
               5:             Label
          38(ip):     12(ptr) Variable Function
      42(m_cpid):     13(ptr) Variable Function
       50(param):     12(ptr) Variable Function
       52(param):     13(ptr) Variable Function
65(@patchConstantResult):     64(ptr) Variable Function
       67(param):     13(ptr) Variable Function
              41:          11 Load 40(ip)
                              Store 38(ip) 41
              45:      9(int) Load 44(m_cpid)
                              Store 42(m_cpid) 45
              49:      9(int) Load 44(m_cpid)
              51:          11 Load 38(ip)
                              Store 50(param) 51
              53:      9(int) Load 42(m_cpid)
                              Store 52(param) 53
              54:  14(HS_OUT) FunctionCall 18(@main(struct-VS_OUT-vf31[4];u1;) 50(param) 52(param)
              56:     55(ptr) AccessChain 48(@entryPointOutput) 49
                              Store 56 54
                              ControlBarrier 20 57 58
              59:      9(int) Load 44(m_cpid)
              61:    60(bool) IEqual 59 30
                              SelectionMerge 63 None
                              BranchConditional 61 62 63
              62:               Label
              68:      9(int)   Load 66(pid)
                                Store 67(param) 68
              69:22(HS_CONSTANT_OUT)   FunctionCall 25(PCF(u1;) 67(param)
                                Store 65(@patchConstantResult) 69
              74:     73(ptr)   AccessChain 65(@patchConstantResult) 30 30
              75:    6(float)   Load 74
              77:     76(ptr)   AccessChain 72(@patchConstantOutput.edges) 30
                                Store 77 75
              79:     73(ptr)   AccessChain 65(@patchConstantResult) 30 78
              80:    6(float)   Load 79
              81:     76(ptr)   AccessChain 72(@patchConstantOutput.edges) 78
                                Store 81 80
                                Branch 63
              63:             Label
                              Return
                              FunctionEnd
18(@main(struct-VS_OUT-vf31[4];u1;):  14(HS_OUT) Function None 15
          16(ip):     12(ptr) FunctionParameter
      17(m_cpid):     13(ptr) FunctionParameter
              19:             Label
      28(output):     27(ptr) Variable Function
              32:     31(ptr) AccessChain 16(ip) 30 30
              33:    7(fvec3) Load 32
              34:     31(ptr) AccessChain 28(output) 30
                              Store 34 33
              35:  14(HS_OUT) Load 28(output)
                              ReturnValue 35
                              FunctionEnd
     25(PCF(u1;):22(HS_CONSTANT_OUT) Function None 23
         24(pid):     13(ptr) FunctionParameter
              26:             Label
      82(output):     64(ptr) Variable Function
              84:     73(ptr) AccessChain 82(output) 30 30
                              Store 84 83
              86:     73(ptr) AccessChain 82(output) 30 78
                              Store 86 85
              87:22(HS_CONSTANT_OUT) Load 82(output)
                              ReturnValue 87
                              FunctionEnd
