spv.ext.ClosestHitShader_Subgroup.rchit
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 67

                              Capability Int64
                              Capability GroupNonUniform
                              Capability GroupNonUniformBallot
                              Capability SubgroupBallotKHR
                              Capability RayTracingKHR
                              Capability VulkanMemoryModelKHR
                              Capability ShaderSMBuiltinsNV
                              Extension  "SPV_KHR_ray_tracing"
                              Extension  "SPV_KHR_shader_ballot"
                              Extension  "SPV_KHR_vulkan_memory_model"
                              Extension  "SPV_NV_shader_sm_builtins"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical VulkanKHR
                              EntryPoint ClosestHitKHR 4  "main" 8 26 28 34 43 48 53 61
                              Source GLSL 460
                              SourceExtension  "GL_ARB_shader_ballot"
                              SourceExtension  "GL_EXT_ray_tracing"
                              SourceExtension  "GL_KHR_shader_subgroup_ballot"
                              SourceExtension  "GL_KHR_shader_subgroup_basic"
                              SourceExtension  "GL_NV_shader_sm_builtins"
                              Name 4  "main"
                              Name 8  "accEXT"
                              Name 26  "incomingPayload"
                              Name 28  "gl_SubgroupInvocationID"
                              Name 34  "gl_SubGroupGeMaskARB"
                              Name 43  "gl_SubgroupGtMask"
                              Name 48  "gl_SubgroupLeMask"
                              Name 53  "gl_SubGroupLtMaskARB"
                              Name 61  "gl_SMIDNV"
                              Decorate 8(accEXT) DescriptorSet 0
                              Decorate 8(accEXT) Binding 0
                              Decorate 26(incomingPayload) Location 1
                              Decorate 28(gl_SubgroupInvocationID) RelaxedPrecision
                              Decorate 28(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
                              Decorate 29 RelaxedPrecision
                              Decorate 30 RelaxedPrecision
                              Decorate 34(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR
                              Decorate 41 RelaxedPrecision
                              Decorate 42 RelaxedPrecision
                              Decorate 43(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
                              Decorate 46 RelaxedPrecision
                              Decorate 46 RelaxedPrecision
                              Decorate 47 RelaxedPrecision
                              Decorate 48(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
                              Decorate 51 RelaxedPrecision
                              Decorate 51 RelaxedPrecision
                              Decorate 52 RelaxedPrecision
                              Decorate 53(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR
                              Decorate 59 RelaxedPrecision
                              Decorate 60 RelaxedPrecision
                              Decorate 61(gl_SMIDNV) BuiltIn SMIDNV
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeAccelerationStructureKHR
               7:             TypePointer UniformConstant 6
       8(accEXT):      7(ptr) Variable UniformConstant
              10:             TypeInt 32 0
              11:     10(int) Constant 0
              12:     10(int) Constant 1
              13:     10(int) Constant 2
              14:     10(int) Constant 3
              15:             TypeFloat 32
              16:             TypeVector 15(float) 3
              17:   15(float) Constant 1056964608
              18:   16(fvec3) ConstantComposite 17 17 17
              19:   15(float) Constant 1065353216
              20:   16(fvec3) ConstantComposite 19 19 19
              21:   15(float) Constant 1061158912
              22:             TypeInt 32 1
              23:     22(int) Constant 1
              24:             TypeVector 15(float) 4
              25:             TypePointer IncomingRayPayloadKHR 24(fvec4)
26(incomingPayload):     25(ptr) Variable IncomingRayPayloadKHR
              27:             TypePointer Input 10(int)
28(gl_SubgroupInvocationID):     27(ptr) Variable Input
              31:             TypeVector 10(int) 4
              32:             TypeInt 64 0
              33:             TypePointer Input 31(ivec4)
34(gl_SubGroupGeMaskARB):     33(ptr) Variable Input
              38:             TypeVector 10(int) 2
43(gl_SubgroupGtMask):     33(ptr) Variable Input
48(gl_SubgroupLeMask):     33(ptr) Variable Input
53(gl_SubGroupLtMaskARB):     33(ptr) Variable Input
   61(gl_SMIDNV):     27(ptr) Variable Input
              65:             TypePointer IncomingRayPayloadKHR 15(float)
         4(main):           2 Function None 3
               5:             Label
               9:           6 Load 8(accEXT)
                              TraceRayKHR 9 11 12 13 14 11 18 17 20 21 26(incomingPayload)
              29:     10(int) Load 28(gl_SubgroupInvocationID) Volatile 
              30:   15(float) ConvertUToF 29
              35:   31(ivec4) Load 34(gl_SubGroupGeMaskARB)
              36:     10(int) CompositeExtract 35 0
              37:     10(int) CompositeExtract 35 1
              39:   38(ivec2) CompositeConstruct 36 37
              40: 32(int64_t) Bitcast 39
              41:   15(float) ConvertUToF 40
              42:   15(float) FAdd 30 41
              44:   31(ivec4) Load 43(gl_SubgroupGtMask) Volatile 
              45:   24(fvec4) ConvertUToF 44
              46:   15(float) CompositeExtract 45 0
              47:   15(float) FAdd 42 46
              49:   31(ivec4) Load 48(gl_SubgroupLeMask) Volatile 
              50:   24(fvec4) ConvertUToF 49
              51:   15(float) CompositeExtract 50 0
              52:   15(float) FAdd 47 51
              54:   31(ivec4) Load 53(gl_SubGroupLtMaskARB)
              55:     10(int) CompositeExtract 54 0
              56:     10(int) CompositeExtract 54 1
              57:   38(ivec2) CompositeConstruct 55 56
              58: 32(int64_t) Bitcast 57
              59:   15(float) ConvertUToF 58
              60:   15(float) FAdd 52 59
              62:     10(int) Load 61(gl_SMIDNV) Volatile 
              63:   15(float) ConvertUToF 62
              64:   15(float) FAdd 60 63
              66:     65(ptr) AccessChain 26(incomingPayload) 11
                              Store 66 64
                              Return
                              FunctionEnd
