spv.ext.World3x4.rahit
Validation failed
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 90

                              Capability RayTracingProvisionalKHR
                              Extension  "SPV_KHR_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint AnyHitKHR 4  "main" 43 60 78 87 89
                              Source GLSL 460
                              SourceExtension  "GL_EXT_ray_tracing"
                              Name 4  "main"
                              Name 8  "k"
                              Name 12  "ndx"
                              Name 14  "col"
                              Name 25  "row"
                              Name 39  "p"
                              Name 43  "gl_LaunchIDEXT"
                              Name 53  "r"
                              Name 60  "gl_WorldToObject3x4EXT"
                              Name 66  "indexable"
                              Name 72  "c"
                              Name 78  "result"
                              Name 87  "attribs"
                              Name 89  "hitValue"
                              Decorate 43(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                              Decorate 60(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
                              Decorate 78(result) DescriptorSet 0
                              Decorate 78(result) Binding 0
                              Decorate 89(hitValue) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               9:    6(float) Constant 1233125376
              10:             TypeInt 32 1
              11:             TypePointer Function 10(int)
              13:     10(int) Constant 4294967295
              15:     10(int) Constant 0
              22:     10(int) Constant 3
              23:             TypeBool
              32:     10(int) Constant 4
              35:     10(int) Constant 1
              37:             TypeVector 10(int) 3
              38:             TypePointer Function 37(ivec3)
              40:             TypeInt 32 0
              41:             TypeVector 40(int) 3
              42:             TypePointer Input 41(ivec3)
43(gl_LaunchIDEXT):     42(ptr) Variable Input
              44:             TypeVector 40(int) 2
              47:             TypeVector 10(int) 2
              55:             TypeVector 6(float) 3
              56:             TypeMatrix 55(fvec3) 4
              57:             TypeVector 6(float) 4
              58:             TypeMatrix 57(fvec4) 3
              59:             TypePointer Input 56
60(gl_WorldToObject3x4EXT):     59(ptr) Variable Input
              65:             TypePointer Function 58
              70:             TypeVector 10(int) 4
              71:             TypePointer Function 70(ivec4)
              76:             TypeImage 10(int) 3D nonsampled format:R32i
              77:             TypePointer UniformConstant 76
      78(result):     77(ptr) Variable UniformConstant
              86:             TypePointer HitAttributeKHR 55(fvec3)
     87(attribs):     86(ptr) Variable HitAttributeKHR
              88:             TypePointer IncomingRayPayloadKHR 55(fvec3)
    89(hitValue):     88(ptr) Variable IncomingRayPayloadKHR
         4(main):           2 Function None 3
               5:             Label
            8(k):      7(ptr) Variable Function
         12(ndx):     11(ptr) Variable Function
         14(col):     11(ptr) Variable Function
         25(row):     11(ptr) Variable Function
           39(p):     38(ptr) Variable Function
           53(r):      7(ptr) Variable Function
   66(indexable):     65(ptr) Variable Function
           72(c):     71(ptr) Variable Function
                              Store 8(k) 9
                              Store 12(ndx) 13
                              Store 14(col) 15
                              Branch 16
              16:             Label
                              LoopMerge 18 19 None
                              Branch 20
              20:             Label
              21:     10(int) Load 14(col)
              24:    23(bool) SLessThan 21 22
                              BranchConditional 24 17 18
              17:               Label
                                Store 25(row) 15
                                Branch 26
              26:               Label
                                LoopMerge 28 29 None
                                Branch 30
              30:               Label
              31:     10(int)   Load 25(row)
              33:    23(bool)   SLessThan 31 32
                                BranchConditional 33 27 28
              27:                 Label
              34:     10(int)     Load 12(ndx)
              36:     10(int)     IAdd 34 35
                                  Store 12(ndx) 36
              45:   41(ivec3)     Load 43(gl_LaunchIDEXT)
              46:   44(ivec2)     VectorShuffle 45 45 0 1
              48:   47(ivec2)     Bitcast 46
              49:     10(int)     Load 12(ndx)
              50:     10(int)     CompositeExtract 48 0
              51:     10(int)     CompositeExtract 48 1
              52:   37(ivec3)     CompositeConstruct 50 51 49
                                  Store 39(p) 52
              54:    6(float)     Load 8(k)
              61:          56     Load 60(gl_WorldToObject3x4EXT)
              62:          58     Transpose 61
              63:     10(int)     Load 14(col)
              64:     10(int)     Load 25(row)
                                  Store 66(indexable) 62
              67:      7(ptr)     AccessChain 66(indexable) 63 64
              68:    6(float)     Load 67
              69:    6(float)     FMul 54 68
                                  Store 53(r) 69
              73:    6(float)     Load 53(r)
              74:     10(int)     ConvertFToS 73
              75:   70(ivec4)     CompositeConstruct 74 15 15 35
                                  Store 72(c) 75
              79:          76     Load 78(result)
              80:   37(ivec3)     Load 39(p)
              81:   70(ivec4)     Load 72(c)
                                  ImageWrite 79 80 81 SignExtend 
                                  Branch 29
              29:                 Label
              82:     10(int)     Load 25(row)
              83:     10(int)     IAdd 82 35
                                  Store 25(row) 83
                                  Branch 26
              28:               Label
                                Branch 19
              19:               Label
              84:     10(int)   Load 14(col)
              85:     10(int)   IAdd 84 35
                                Store 14(col) 85
                                Branch 16
              18:             Label
                              Return
                              FunctionEnd
