Skip to content

Instantly share code, notes, and snippets.

@karolherbst
Created April 11, 2022 17:33
Show Gist options
  • Save karolherbst/c33fa9233b0fb3628a7b99b3f7194bd1 to your computer and use it in GitHub Desktop.
Save karolherbst/c33fa9233b0fb3628a7b99b3f7194bd1 to your computer and use it in GitHub Desktop.
; SPIR-V
; Version: 1.0
; Generator: Khronos LLVM/SPIR-V Translator; 14
; Bound: 39
; Schema: 0
OpCapability Addresses
OpCapability Linkage
OpCapability Kernel
OpCapability Int64
%1 = OpExtInstImport "OpenCL.std"
OpMemoryModel Physical64 OpenCL
OpEntryPoint Kernel %32 "CopyBuffer" %__spirv_BuiltInGlobalInvocationId
%37 = OpString "kernel_arg_type.CopyBuffer.float*,float*,"
%38 = OpString "kernel_arg_type_qual.CopyBuffer.,,"
OpSource OpenCL_C 300000
OpName %__spirv_BuiltInGlobalInvocationId "__spirv_BuiltInGlobalInvocationId"
OpName %CopyBuffer "CopyBuffer"
OpName %src "src"
OpName %dst "dst"
OpName %entry "entry"
OpName %src_addr "src.addr"
OpName %dst_addr "dst.addr"
OpName %id "id"
OpName %call "call"
OpName %conv "conv"
OpName %idxprom "idxprom"
OpName %arrayidx "arrayidx"
OpName %idxprom1 "idxprom1"
OpName %arrayidx2 "arrayidx2"
OpName %src_0 "src"
OpName %dst_0 "dst"
OpDecorate %__spirv_BuiltInGlobalInvocationId LinkageAttributes "__spirv_BuiltInGlobalInvocationId" Import
OpDecorate %__spirv_BuiltInGlobalInvocationId Constant
OpDecorate %__spirv_BuiltInGlobalInvocationId BuiltIn GlobalInvocationId
OpDecorate %CopyBuffer LinkageAttributes "CopyBuffer" Export
OpDecorate %src Alignment 4
OpDecorate %dst Alignment 4
OpDecorate %src_addr Alignment 8
OpDecorate %dst_addr Alignment 8
OpDecorate %id Alignment 4
OpDecorate %src_0 Alignment 4
OpDecorate %dst_0 Alignment 4
%ulong = OpTypeInt 64 0
%uint = OpTypeInt 32 0
%v3ulong = OpTypeVector %ulong 3
%_ptr_Input_v3ulong = OpTypePointer Input %v3ulong
%void = OpTypeVoid
%float = OpTypeFloat 32
%_ptr_CrossWorkgroup_float = OpTypePointer CrossWorkgroup %float
%9 = OpTypeFunction %void %_ptr_CrossWorkgroup_float %_ptr_CrossWorkgroup_float
%_ptr_Function__ptr_CrossWorkgroup_float = OpTypePointer Function %_ptr_CrossWorkgroup_float
%_ptr_Function_uint = OpTypePointer Function %uint
%__spirv_BuiltInGlobalInvocationId = OpVariable %_ptr_Input_v3ulong Input
%CopyBuffer = OpFunction %void DontInline %9
%src = OpFunctionParameter %_ptr_CrossWorkgroup_float
%dst = OpFunctionParameter %_ptr_CrossWorkgroup_float
%entry = OpLabel
%src_addr = OpVariable %_ptr_Function__ptr_CrossWorkgroup_float Function
%dst_addr = OpVariable %_ptr_Function__ptr_CrossWorkgroup_float Function
%id = OpVariable %_ptr_Function_uint Function
OpStore %src_addr %src Aligned 8
OpStore %dst_addr %dst Aligned 8
%20 = OpLoad %v3ulong %__spirv_BuiltInGlobalInvocationId Aligned 32
%call = OpCompositeExtract %ulong %20 0
%conv = OpUConvert %uint %call
OpStore %id %conv Aligned 4
%23 = OpLoad %_ptr_CrossWorkgroup_float %src_addr Aligned 8
%24 = OpLoad %uint %id Aligned 4
%idxprom = OpSConvert %ulong %24
%arrayidx = OpInBoundsPtrAccessChain %_ptr_CrossWorkgroup_float %23 %idxprom
%27 = OpLoad %float %arrayidx Aligned 4
%28 = OpLoad %_ptr_CrossWorkgroup_float %dst_addr Aligned 8
%29 = OpLoad %uint %id Aligned 4
%idxprom1 = OpSConvert %ulong %29
%arrayidx2 = OpInBoundsPtrAccessChain %_ptr_CrossWorkgroup_float %28 %idxprom1
OpStore %arrayidx2 %27 Aligned 4
OpReturn
OpFunctionEnd
%32 = OpFunction %void DontInline %9
%src_0 = OpFunctionParameter %_ptr_CrossWorkgroup_float
%dst_0 = OpFunctionParameter %_ptr_CrossWorkgroup_float
%35 = OpLabel
%36 = OpFunctionCall %void %CopyBuffer %src_0 %dst_0
OpReturn
OpFunctionEnd
; SPIR-V
; Version: 1.0
; Generator: Khronos LLVM/SPIR-V Translator; 14
; Bound: 26
; Schema: 0
OpCapability Addresses
OpCapability Linkage
OpCapability Kernel
%1 = OpExtInstImport "OpenCL.std"
OpMemoryModel Physical64 OpenCL
OpEntryPoint Kernel %19 "AnotherCopyBuffer"
OpExecutionMode %19 ContractionOff
%24 = OpString "kernel_arg_type.AnotherCopyBuffer.float*,float*,"
%25 = OpString "kernel_arg_type_qual.AnotherCopyBuffer.,,"
OpSource OpenCL_C 300000
OpName %CopyBuffer "CopyBuffer"
OpName %AnotherCopyBuffer "AnotherCopyBuffer"
OpName %src "src"
OpName %dst "dst"
OpName %entry "entry"
OpName %src_addr "src.addr"
OpName %dst_addr "dst.addr"
OpName %src_0 "src"
OpName %dst_0 "dst"
OpDecorate %CopyBuffer LinkageAttributes "CopyBuffer" Import
OpDecorate %7 Alignment 4
OpDecorate %8 Alignment 4
OpDecorate %AnotherCopyBuffer LinkageAttributes "AnotherCopyBuffer" Export
OpDecorate %src Alignment 4
OpDecorate %dst Alignment 4
OpDecorate %src_addr Alignment 8
OpDecorate %dst_addr Alignment 8
OpDecorate %src_0 Alignment 4
OpDecorate %dst_0 Alignment 4
%void = OpTypeVoid
%float = OpTypeFloat 32
%_ptr_CrossWorkgroup_float = OpTypePointer CrossWorkgroup %float
%5 = OpTypeFunction %void %_ptr_CrossWorkgroup_float %_ptr_CrossWorkgroup_float
%_ptr_Function__ptr_CrossWorkgroup_float = OpTypePointer Function %_ptr_CrossWorkgroup_float
%CopyBuffer = OpFunction %void None %5
%7 = OpFunctionParameter %_ptr_CrossWorkgroup_float
%8 = OpFunctionParameter %_ptr_CrossWorkgroup_float
OpFunctionEnd
%AnotherCopyBuffer = OpFunction %void DontInline %5
%src = OpFunctionParameter %_ptr_CrossWorkgroup_float
%dst = OpFunctionParameter %_ptr_CrossWorkgroup_float
%entry = OpLabel
%src_addr = OpVariable %_ptr_Function__ptr_CrossWorkgroup_float Function
%dst_addr = OpVariable %_ptr_Function__ptr_CrossWorkgroup_float Function
OpStore %src_addr %src Aligned 8
OpStore %dst_addr %dst Aligned 8
%16 = OpLoad %_ptr_CrossWorkgroup_float %src_addr Aligned 8
%17 = OpLoad %_ptr_CrossWorkgroup_float %dst_addr Aligned 8
%18 = OpFunctionCall %void %CopyBuffer %16 %17
OpReturn
OpFunctionEnd
%19 = OpFunction %void DontInline %5
%src_0 = OpFunctionParameter %_ptr_CrossWorkgroup_float
%dst_0 = OpFunctionParameter %_ptr_CrossWorkgroup_float
%22 = OpLabel
%23 = OpFunctionCall %void %AnotherCopyBuffer %src_0 %dst_0
OpReturn
OpFunctionEnd
; SPIR-V
; Version: 1.0
; Generator: Khronos SPIR-V Tools Linker; 0
; Bound: 55
; Schema: 0
OpCapability Addresses
OpCapability Kernel
OpCapability Int64
%1 = OpExtInstImport "OpenCL.std"
OpMemoryModel Physical64 OpenCL
OpEntryPoint Kernel %2 "CopyBuffer" %__spirv_BuiltInGlobalInvocationId
OpEntryPoint Kernel %4 "AnotherCopyBuffer"
OpExecutionMode %4 ContractionOff
%5 = OpString "kernel_arg_type.CopyBuffer.float*,float*,"
%6 = OpString "kernel_arg_type_qual.CopyBuffer.,,"
OpSource OpenCL_C 300000
%7 = OpString "kernel_arg_type.AnotherCopyBuffer.float*,float*,"
%8 = OpString "kernel_arg_type_qual.AnotherCopyBuffer.,,"
OpSource OpenCL_C 300000
OpName %__spirv_BuiltInGlobalInvocationId "__spirv_BuiltInGlobalInvocationId"
OpName %CopyBuffer "CopyBuffer"
OpName %src "src"
OpName %dst "dst"
OpName %entry "entry"
OpName %src_addr "src.addr"
OpName %dst_addr "dst.addr"
OpName %id "id"
OpName %call "call"
OpName %conv "conv"
OpName %idxprom "idxprom"
OpName %arrayidx "arrayidx"
OpName %idxprom1 "idxprom1"
OpName %arrayidx2 "arrayidx2"
OpName %src_0 "src"
OpName %dst_0 "dst"
OpName %AnotherCopyBuffer "AnotherCopyBuffer"
OpName %src_1 "src"
OpName %dst_1 "dst"
OpName %entry_0 "entry"
OpName %src_addr_0 "src.addr"
OpName %dst_addr_0 "dst.addr"
OpName %src_2 "src"
OpName %dst_2 "dst"
OpDecorate %__spirv_BuiltInGlobalInvocationId Constant
OpDecorate %__spirv_BuiltInGlobalInvocationId BuiltIn GlobalInvocationId
OpDecorate %src Alignment 4
OpDecorate %dst Alignment 4
OpDecorate %src_addr Alignment 8
OpDecorate %dst_addr Alignment 8
OpDecorate %id Alignment 4
OpDecorate %src_0 Alignment 4
OpDecorate %dst_0 Alignment 4
OpDecorate %src_1 Alignment 4
OpDecorate %dst_1 Alignment 4
OpDecorate %src_addr_0 Alignment 8
OpDecorate %dst_addr_0 Alignment 8
OpDecorate %src_2 Alignment 4
OpDecorate %dst_2 Alignment 4
%ulong = OpTypeInt 64 0
%uint = OpTypeInt 32 0
%v3ulong = OpTypeVector %ulong 3
%_ptr_Input_v3ulong = OpTypePointer Input %v3ulong
%void = OpTypeVoid
%float = OpTypeFloat 32
%_ptr_CrossWorkgroup_float = OpTypePointer CrossWorkgroup %float
%39 = OpTypeFunction %void %_ptr_CrossWorkgroup_float %_ptr_CrossWorkgroup_float
%_ptr_Function__ptr_CrossWorkgroup_float = OpTypePointer Function %_ptr_CrossWorkgroup_float
%_ptr_Function_uint = OpTypePointer Function %uint
%__spirv_BuiltInGlobalInvocationId = OpVariable %_ptr_Input_v3ulong Input
%CopyBuffer = OpFunction %void DontInline %39
%src = OpFunctionParameter %_ptr_CrossWorkgroup_float
%dst = OpFunctionParameter %_ptr_CrossWorkgroup_float
%entry = OpLabel
%src_addr = OpVariable %_ptr_Function__ptr_CrossWorkgroup_float Function
%dst_addr = OpVariable %_ptr_Function__ptr_CrossWorkgroup_float Function
%id = OpVariable %_ptr_Function_uint Function
OpStore %src_addr %src Aligned 8
OpStore %dst_addr %dst Aligned 8
%42 = OpLoad %v3ulong %__spirv_BuiltInGlobalInvocationId Aligned 32
%call = OpCompositeExtract %ulong %42 0
%conv = OpUConvert %uint %call
OpStore %id %conv Aligned 4
%43 = OpLoad %_ptr_CrossWorkgroup_float %src_addr Aligned 8
%44 = OpLoad %uint %id Aligned 4
%idxprom = OpSConvert %ulong %44
%arrayidx = OpInBoundsPtrAccessChain %_ptr_CrossWorkgroup_float %43 %idxprom
%45 = OpLoad %float %arrayidx Aligned 4
%46 = OpLoad %_ptr_CrossWorkgroup_float %dst_addr Aligned 8
%47 = OpLoad %uint %id Aligned 4
%idxprom1 = OpSConvert %ulong %47
%arrayidx2 = OpInBoundsPtrAccessChain %_ptr_CrossWorkgroup_float %46 %idxprom1
OpStore %arrayidx2 %45 Aligned 4
OpReturn
OpFunctionEnd
%2 = OpFunction %void DontInline %39
%src_0 = OpFunctionParameter %_ptr_CrossWorkgroup_float
%dst_0 = OpFunctionParameter %_ptr_CrossWorkgroup_float
%48 = OpLabel
%49 = OpFunctionCall %void %CopyBuffer %src_0 %dst_0
OpReturn
OpFunctionEnd
%AnotherCopyBuffer = OpFunction %void DontInline %39
%src_1 = OpFunctionParameter %_ptr_CrossWorkgroup_float
%dst_1 = OpFunctionParameter %_ptr_CrossWorkgroup_float
%entry_0 = OpLabel
%src_addr_0 = OpVariable %_ptr_Function__ptr_CrossWorkgroup_float Function
%dst_addr_0 = OpVariable %_ptr_Function__ptr_CrossWorkgroup_float Function
OpStore %src_addr_0 %src_1 Aligned 8
OpStore %dst_addr_0 %dst_1 Aligned 8
%50 = OpLoad %_ptr_CrossWorkgroup_float %src_addr_0 Aligned 8
%51 = OpLoad %_ptr_CrossWorkgroup_float %dst_addr_0 Aligned 8
%52 = OpFunctionCall %void %CopyBuffer %50 %51
OpReturn
OpFunctionEnd
%4 = OpFunction %void DontInline %39
%src_2 = OpFunctionParameter %_ptr_CrossWorkgroup_float
%dst_2 = OpFunctionParameter %_ptr_CrossWorkgroup_float
%53 = OpLabel
%54 = OpFunctionCall %void %AnotherCopyBuffer %src_2 %dst_2
OpReturn
OpFunctionEnd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment