OpCapability Addresses OpCapability Linkage OpCapability Kernel OpMemoryModel Physical32 OpenCL OpEntryPoint Kernel %func "opaque" OpName %inptr "in" OpDecorate %global_id BuiltIn GlobalInvocationId OpDecorate %global_id Constant OpDecorate %inptr FuncParamAttr NoCapture OpDecorate %global_id LinkageAttributes "__spirv_GlobalInvocationId" Import OpDecorate %opaque_store LinkageAttributes "opaque_store" Import %idx_t = OpTypeInt 32 0 %idx3_t = OpTypeVector %idx_t 3 %idx3_ptr_t = OpTypePointer UniformConstant %idx3_t %void_t = OpTypeVoid %float_t = OpTypeFloat 32 %opaque_t = OpTypeOpaque "opaque_t" %opaque_ptr_t = OpTypePointer CrossWorkgroup %opaque_t %val = OpConstant %float_t 3.1415927 %func_t = OpTypeFunction %void_t %opaque_ptr_t %global_id = OpVariable %idx3_ptr_t UniformConstant %opaque_store_t = OpTypeFunction %void_t %opaque_ptr_t %idx_t %float_t %opaque_store = OpFunction %void_t None %opaque_store_t %opaque_store_in = OpFunctionParameter %opaque_ptr_t %opaque_store_idx = OpFunctionParameter %idx_t %opaque_store_val = OpFunctionParameter %float_t OpFunctionEnd %func = OpFunction %void_t None %func_t %inptr = OpFunctionParameter %opaque_ptr_t %entry = OpLabel %idx3 = OpLoad %idx3_t %global_id Aligned 0 %idx = OpCompositeExtract %idx_t %idx3 0 %return = OpFunctionCall %void_t %opaque_store %inptr %idx %val OpReturn OpFunctionEnd