hlsl.intrinsics.barriers.comp
Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:3  Function Definition: @ComputeShaderFunction( ( temp float)
0:3    Function Parameters: 
0:?     Sequence
0:4      MemoryBarrier ( temp void)
0:5      AllMemoryBarrierWithGroupSync ( temp void)
0:6      GroupMemoryBarrier ( temp void)
0:7      GroupMemoryBarrierWithGroupSync ( temp void)
0:8      WorkgroupMemoryBarrier ( temp void)
0:9      WorkgroupMemoryBarrierWithGroupSync ( temp void)
0:11      Branch: Return with expression
0:11        Constant:
0:11          0.000000
0:3  Function Definition: ComputeShaderFunction( ( temp void)
0:3    Function Parameters: 
0:?     Sequence
0:3      move second child to first child ( temp float)
0:?         '@entryPointOutput' (layout( location=0) out float)
0:3        Function Call: @ComputeShaderFunction( ( temp float)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out float)


Linked compute stage:


Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:3  Function Definition: @ComputeShaderFunction( ( temp float)
0:3    Function Parameters: 
0:?     Sequence
0:4      MemoryBarrier ( temp void)
0:5      AllMemoryBarrierWithGroupSync ( temp void)
0:6      GroupMemoryBarrier ( temp void)
0:7      GroupMemoryBarrierWithGroupSync ( temp void)
0:8      WorkgroupMemoryBarrier ( temp void)
0:9      WorkgroupMemoryBarrierWithGroupSync ( temp void)
0:11      Branch: Return with expression
0:11        Constant:
0:11          0.000000
0:3  Function Definition: ComputeShaderFunction( ( temp void)
0:3    Function Parameters: 
0:?     Sequence
0:3      move second child to first child ( temp float)
0:?         '@entryPointOutput' (layout( location=0) out float)
0:3        Function Call: @ComputeShaderFunction( ( temp float)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "ComputeShaderFunction" 20
                              ExecutionMode 4 LocalSize 1 1 1
                              Source HLSL 500
                              Name 4  "ComputeShaderFunction"
                              Name 8  "@ComputeShaderFunction("
                              Name 20  "@entryPointOutput"
                              Decorate 20(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeFunction 6(float)
              10:             TypeInt 32 0
              11:     10(int) Constant 1
              12:     10(int) Constant 4048
              13:     10(int) Constant 512
              14:     10(int) Constant 2
              15:     10(int) Constant 256
              16:    6(float) Constant 0
              19:             TypePointer Output 6(float)
20(@entryPointOutput):     19(ptr) Variable Output
4(ComputeShaderFunction):           2 Function None 3
               5:             Label
              21:    6(float) FunctionCall 8(@ComputeShaderFunction()
                              Store 20(@entryPointOutput) 21
                              Return
                              FunctionEnd
8(@ComputeShaderFunction():    6(float) Function None 7
               9:             Label
                              MemoryBarrier 11 12
                              ControlBarrier 11 11 12
                              MemoryBarrier 11 13
                              ControlBarrier 11 11 13
                              MemoryBarrier 14 15
                              ControlBarrier 14 14 15
                              ReturnValue 16
                              FunctionEnd
