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

                              Capability Shader
                              Capability Int64
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main"
                              ExecutionMode 4 LocalSize 54 1 1
                              Source GLSL 450
                              SourceExtension  "GL_ARB_gpu_shader_int64"
                              Name 4  "main"
                              Name 8  "result"
                              Name 11  "arg0"
                              Name 15  "arg1"
                              Decorate 11(arg0) Location 4
                              Decorate 15(arg1) Location 5
                              Decorate 32 BuiltIn WorkgroupSize
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 64 0
               7:             TypePointer Function 6(int64_t)
               9:             TypeInt 64 1
              10:             TypePointer UniformConstant 9(int64_t)
        11(arg0):     10(ptr) Variable UniformConstant
              13:             TypeInt 32 0
              14:             TypePointer UniformConstant 13(int)
        15(arg1):     14(ptr) Variable UniformConstant
              29:             TypeVector 13(int) 3
              30:     13(int) Constant 54
              31:     13(int) Constant 1
              32:   29(ivec3) ConstantComposite 30 31 31
         4(main):           2 Function None 3
               5:             Label
       8(result):      7(ptr) Variable Function
              12:  9(int64_t) Load 11(arg0)
              16:     13(int) Load 15(arg1)
              17:  9(int64_t) ShiftLeftLogical 12 16
              18:  6(int64_t) Bitcast 17
                              Store 8(result) 18
              19:  9(int64_t) Load 11(arg0)
              20:     13(int) Load 15(arg1)
              21:  9(int64_t) ShiftRightArithmetic 19 20
              22:  6(int64_t) Bitcast 21
                              Store 8(result) 22
              23:     13(int) Load 15(arg1)
              24:  6(int64_t) Load 8(result)
              25:  6(int64_t) ShiftLeftLogical 24 23
                              Store 8(result) 25
              26:     13(int) Load 15(arg1)
              27:  6(int64_t) Load 8(result)
              28:  6(int64_t) ShiftRightLogical 27 26
                              Store 8(result) 28
                              Return
                              FunctionEnd
