hlsl.hull.2.tesc
Shader version: 500
vertices = 4
vertex spacing = equal_spacing
0:? Sequence
0:26  Function Definition: @main(struct-VS_OUT-vf31[4]; ( 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:?     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 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:?           'InvocationId' ( in uint InvocationID)
0:26        Function Call: @main(struct-VS_OUT-vf31[4]; ( 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:?       Barrier ( temp void)
0:?       Test condition and select ( temp void)
0:?         Condition
0:?         Compare Equal ( temp bool)
0:?           'InvocationId' ( 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;vf4; ( temp structure{ temp 2-element array of float edges})
0:?               'pid' ( in uint PrimitiveID)
0:?               'pos' ( in 4-component vector of float Position)
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;vf4; ( temp structure{ temp 2-element array of float edges})
0:33    Function Parameters: 
0:33      'pid' ( in uint)
0:33      'pos' ( in 4-component vector of float)
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:?     'InvocationId' ( in uint InvocationID)
0:?     'pid' ( in uint PrimitiveID)
0:?     'pos' ( in 4-component vector of float Position)
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]; ( 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:?     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 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:?           'InvocationId' ( in uint InvocationID)
0:26        Function Call: @main(struct-VS_OUT-vf31[4]; ( 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:?       Barrier ( temp void)
0:?       Test condition and select ( temp void)
0:?         Condition
0:?         Compare Equal ( temp bool)
0:?           'InvocationId' ( 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;vf4; ( temp structure{ temp 2-element array of float edges})
0:?               'pid' ( in uint PrimitiveID)
0:?               'pos' ( in 4-component vector of float Position)
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;vf4; ( temp structure{ temp 2-element array of float edges})
0:33    Function Parameters: 
0:33      'pid' ( in uint)
0:33      'pos' ( in 4-component vector of float)
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:?     'InvocationId' ( in uint InvocationID)
0:?     'pid' ( in uint PrimitiveID)
0:?     'pos' ( in 4-component vector of float Position)
0:?     '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)

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

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