spv.subgroup.geom
// Module Version 10300
// Generated by (magic number): 8000b
// Id's are bound by 26

                              Capability Geometry
                              Capability GroupNonUniform
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Geometry 4  "main" 15 18 20
                              ExecutionMode 4 InputPoints
                              ExecutionMode 4 Invocations 1
                              ExecutionMode 4 OutputPoints
                              ExecutionMode 4 OutputVertices 1
                              Source GLSL 450
                              SourceExtension  "GL_KHR_shader_subgroup_basic"
                              Name 4  "main"
                              Name 9  "Output"
                              MemberName 9(Output) 0  "result"
                              Name 11  ""
                              Name 15  "gl_PrimitiveIDIn"
                              Name 18  "gl_SubgroupSize"
                              Name 20  "gl_SubgroupInvocationID"
                              Decorate 8 ArrayStride 16
                              MemberDecorate 9(Output) 0 Offset 0
                              Decorate 9(Output) Block
                              Decorate 11 DescriptorSet 0
                              Decorate 11 Binding 0
                              Decorate 15(gl_PrimitiveIDIn) BuiltIn PrimitiveId
                              Decorate 18(gl_SubgroupSize) RelaxedPrecision
                              Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize
                              Decorate 19 RelaxedPrecision
                              Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision
                              Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
                              Decorate 21 RelaxedPrecision
                              Decorate 23 RelaxedPrecision
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeVector 6(int) 4
               8:             TypeRuntimeArray 7(ivec4)
       9(Output):             TypeStruct 8
              10:             TypePointer StorageBuffer 9(Output)
              11:     10(ptr) Variable StorageBuffer
              12:             TypeInt 32 1
              13:     12(int) Constant 0
              14:             TypePointer Input 12(int)
15(gl_PrimitiveIDIn):     14(ptr) Variable Input
              17:             TypePointer Input 6(int)
18(gl_SubgroupSize):     17(ptr) Variable Input
20(gl_SubgroupInvocationID):     17(ptr) Variable Input
              22:      6(int) Constant 0
              24:             TypePointer StorageBuffer 7(ivec4)
         4(main):           2 Function None 3
               5:             Label
              16:     12(int) Load 15(gl_PrimitiveIDIn)
              19:      6(int) Load 18(gl_SubgroupSize)
              21:      6(int) Load 20(gl_SubgroupInvocationID)
              23:    7(ivec4) CompositeConstruct 19 21 22 22
              25:     24(ptr) AccessChain 11 13 16
                              Store 25 23
                              Return
                              FunctionEnd
