1; SPIR-V 2; Version: 1.3 3; Generator: Khronos Glslang Reference Front End; 7 4; Bound: 63 5; Schema: 0 6 OpCapability Shader 7 OpCapability StorageBuffer16BitAccess 8 OpCapability StorageBuffer8BitAccess 9 OpCapability UniformAndStorageBuffer8BitAccess 10 OpExtension "SPV_KHR_8bit_storage" 11 %1 = OpExtInstImport "GLSL.std.450" 12 OpMemoryModel Logical GLSL450 13 OpEntryPoint GLCompute %main "main" %gl_LocalInvocationID %gl_GlobalInvocationID %gl_WorkGroupID %gl_NumWorkGroups 14 OpExecutionMode %main LocalSize 1 1 1 15 OpSource GLSL 450 16 OpSourceExtension "GL_EXT_shader_16bit_storage" 17 OpSourceExtension "GL_EXT_shader_8bit_storage" 18 OpName %main "main" 19 OpName %foo "foo" 20 OpMemberName %foo 0 "bar" 21 OpMemberName %foo 1 "baz" 22 OpMemberName %foo 2 "quux" 23 OpMemberName %foo 3 "blah" 24 OpMemberName %foo 4 "wibble" 25 OpName %_ "" 26 OpName %gl_LocalInvocationID "gl_LocalInvocationID" 27 OpName %gl_GlobalInvocationID "gl_GlobalInvocationID" 28 OpName %gl_WorkGroupID "gl_WorkGroupID" 29 OpName %gl_NumWorkGroups "gl_NumWorkGroups" 30 OpMemberDecorate %foo 0 Offset 0 31 OpMemberDecorate %foo 1 Offset 4 32 OpMemberDecorate %foo 2 Offset 16 33 OpMemberDecorate %foo 3 Offset 17 34 OpMemberDecorate %foo 4 Offset 22 35 OpDecorate %foo BufferBlock 36 OpDecorate %_ DescriptorSet 0 37 OpDecorate %_ Binding 0 38 OpDecorate %gl_LocalInvocationID BuiltIn LocalInvocationId 39 OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId 40 OpDecorate %gl_WorkGroupID BuiltIn WorkgroupId 41 OpDecorate %gl_NumWorkGroups BuiltIn NumWorkgroups 42 %void = OpTypeVoid 43 %3 = OpTypeFunction %void 44 %uint = OpTypeInt 32 0 45 %float = OpTypeFloat 32 46 %v3float = OpTypeVector %float 3 47 %uchar = OpTypeInt 8 0 48 %v4uchar = OpTypeVector %uchar 4 49 %half = OpTypeFloat 16 50 %v2half = OpTypeVector %half 2 51 %foo = OpTypeStruct %uint %v3float %uchar %v4uchar %v2half 52%_ptr_Uniform_foo = OpTypePointer Uniform %foo 53 %_ = OpVariable %_ptr_Uniform_foo Uniform 54 %int = OpTypeInt 32 1 55 %int_0 = OpConstant %int 0 56 %v3uint = OpTypeVector %uint 3 57%_ptr_Input_v3uint = OpTypePointer Input %v3uint 58%gl_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input 59 %uint_0 = OpConstant %uint 0 60%_ptr_Input_uint = OpTypePointer Input %uint 61%_ptr_Uniform_uint = OpTypePointer Uniform %uint 62 %int_1 = OpConstant %int 1 63%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input 64%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float 65 %int_3 = OpConstant %int 3 66%_ptr_Uniform_v4uchar = OpTypePointer Uniform %v4uchar 67 %v4uint = OpTypeVector %uint 4 68%gl_WorkGroupID = OpVariable %_ptr_Input_v3uint Input 69 %int_4 = OpConstant %int 4 70%_ptr_Uniform_v2half = OpTypePointer Uniform %v2half 71 %v2float = OpTypeVector %float 2 72%gl_NumWorkGroups = OpVariable %_ptr_Input_v3uint Input 73 %v2uint = OpTypeVector %uint 2 74 %main = OpFunction %void None %3 75 %5 = OpLabel 76 %23 = OpAccessChain %_ptr_Input_uint %gl_LocalInvocationID %uint_0 77 %24 = OpLoad %uint %23 78 %26 = OpAccessChain %_ptr_Uniform_uint %_ %int_0 79 OpStore %26 %24 80 %29 = OpLoad %v3uint %gl_GlobalInvocationID 81 %30 = OpConvertUToF %v3float %29 82 %32 = OpAccessChain %_ptr_Uniform_v3float %_ %int_1 83 OpStore %32 %30 84 %35 = OpAccessChain %_ptr_Uniform_v4uchar %_ %int_3 85 %36 = OpLoad %v4uchar %35 86 %38 = OpUConvert %v4uint %36 87 %39 = OpVectorShuffle %v3uint %38 %38 0 1 2 88 %41 = OpLoad %v3uint %gl_WorkGroupID 89 %42 = OpIAdd %v3uint %39 %41 90 %43 = OpCompositeExtract %uint %42 0 91 %44 = OpCompositeExtract %uint %42 1 92 %45 = OpCompositeExtract %uint %42 2 93 %46 = OpCompositeConstruct %v4uint %43 %44 %45 %uint_0 94 %47 = OpUConvert %v4uchar %46 95 %48 = OpAccessChain %_ptr_Uniform_v4uchar %_ %int_3 96 OpStore %48 %47 97 %51 = OpAccessChain %_ptr_Uniform_v2half %_ %int_4 98 %52 = OpLoad %v2half %51 99 %54 = OpFConvert %v2float %52 100 %57 = OpLoad %v3uint %gl_NumWorkGroups 101 %58 = OpVectorShuffle %v2uint %57 %57 0 1 102 %59 = OpConvertUToF %v2float %58 103 %60 = OpFMul %v2float %54 %59 104 %61 = OpFConvert %v2half %60 105 %62 = OpAccessChain %_ptr_Uniform_v2half %_ %int_4 106 OpStore %62 %61 107 OpReturn 108 OpFunctionEnd 109