分析
以下C函数,
C++
__kernel void bilateral(__global const uchar * src, int src_step, int src_offset,
__global uchar * dst, int dst_step, int dst_offset, int dst_rows,
int dst_cols,__constant float * space_weight, __constant int * space_ofs)
编译成SPIRV后为
Bash
; SPIR-V
; Version: 1.0
; Generator: Khronos LLVM/SPIR-V Translator; 14
; Bound: 1589
; Schema: 0
OpCapability Addresses
OpCapability Linkage
OpCapability Kernel
OpCapability Int8
OpExtension "SPV_KHR_no_integer_wrap_decoration"
%1 = OpExtInstImport "OpenCL.std"
OpMemoryModel Physical32 OpenCL
OpEntryPoint Kernel %13 "bilateral" %5 这个是参数
%1585 = OpString "kernel_arg_type.bilateral.uchar*,int,int,uchar*,int,int,int,int,float*,int*," 这个是函数名
OpSource OpenCL_C 102000
OpName %5 "__spirv_BuiltInGlobalInvocationId"
目前OpenCL_Compiler会一个函数编译生成一个SPIRV文件。