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      DeviceMemoryBarrier ( temp void)
0:7      DeviceMemoryBarrierWithGroupSync ( 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      DeviceMemoryBarrier ( temp void)
0:7      DeviceMemoryBarrierWithGroupSync ( 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): 80008
// 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 3400
              13:     10(int) Constant 2
              14:     10(int) Constant 2120
              15:     10(int) Constant 264
              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 13 11 12
                              MemoryBarrier 11 14
                              ControlBarrier 13 11 14
                              MemoryBarrier 13 15
                              ControlBarrier 13 13 15
                              ReturnValue 16
                              FunctionEnd
