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


Linked compute stage:


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

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

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