spv.shaderGroupVote.comp
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 33

                              Capability Shader
                              Capability SubgroupVoteKHR
                              Extension  "SPV_KHR_subgroup_vote"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main"
                              ExecutionMode 4 LocalSize 4 4 1
                              Source GLSL 450
                              SourceExtension  "GL_ARB_shader_group_vote"
                              Name 4  "main"
                              Name 8  "b1"
                              Name 10  "Buffers"
                              MemberName 10(Buffers) 0  "b"
                              Name 12  ""
                              MemberDecorate 10(Buffers) 0 Offset 0
                              Decorate 10(Buffers) BufferBlock
                              Decorate 12 DescriptorSet 0
                              Decorate 12 Binding 0
                              Decorate 32 BuiltIn WorkgroupSize
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeBool
               7:             TypePointer Function 6(bool)
               9:             TypeInt 32 0
     10(Buffers):             TypeStruct 9(int)
              11:             TypePointer Uniform 10(Buffers)
              12:     11(ptr) Variable Uniform
              13:             TypeInt 32 1
              14:     13(int) Constant 0
              15:             TypePointer Uniform 9(int)
              18:      9(int) Constant 0
              27:      9(int) Constant 1
              30:             TypeVector 9(int) 3
              31:      9(int) Constant 4
              32:   30(ivec3) ConstantComposite 31 31 27
         4(main):           2 Function None 3
               5:             Label
           8(b1):      7(ptr) Variable Function
              16:     15(ptr) AccessChain 12 14
              17:      9(int) Load 16
              19:     6(bool) INotEqual 17 18
                              Store 8(b1) 19
              20:     6(bool) Load 8(b1)
              21:     6(bool) SubgroupAnyKHR 20
                              Store 8(b1) 21
              22:     6(bool) Load 8(b1)
              23:     6(bool) SubgroupAllKHR 22
                              Store 8(b1) 23
              24:     6(bool) Load 8(b1)
              25:     6(bool) SubgroupAllEqualKHR 24
                              Store 8(b1) 25
              26:     6(bool) Load 8(b1)
              28:      9(int) Select 26 27 18
              29:     15(ptr) AccessChain 12 14
                              Store 29 28
                              Return
                              FunctionEnd
