<div dir="ltr">Hi all,<div><br></div><div>According to the SPIR 2.0 spec[1], the name of OpenCL builtins are mangled.</div><div><br></div><div>However, when I compile OpenCl code with Clang 3.9 with the "spir64-unknown-unknown" target, Clang generates IR without mangling the builtins, e.g. for:</div><div><br></div><div><div>__kernel void input_zip_int(__global int *in0) {</div><div>  *in0 = get_global_id(0);</div><div>}</div></div><div><br></div><div>clang generates:</div><div><br></div><div><div>define spir_kernel void @input_zip_int(i32 addrspace(1)* nocapture %in0) local_unnamed_addr #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !5 !kernel_arg_base_type !5 !kernel_arg_type_qual !6 {</div><div>entry:</div><div>  %call = tail call spir_func i128 @get_global_id(i32 0) #2</div><div>  %conv = trunc i128 %call to i32</div><div>  store i32 %conv, i32 addrspace(1)* %in0, align 4, !tbaa !7</div><div>  ret void</div><div>}</div></div><div><br></div><div>In this case, get_global_id is not mangled to _Z13get_global_idj according to [2].</div><div><br></div><div>Is there an option for clang or an LLVM clang to do the mangling for spir builtins?</div><div><br></div><div>Thanks</div><div>Hongbin</div><div><br></div><div><br></div><div>[1] <a href="https://www.khronos.org/registry/spir/specs/spir_spec-2.0.pdf">https://www.khronos.org/registry/spir/specs/spir_spec-2.0.pdf</a>, page 36</div><div>[2] <a href="https://github.com/KhronosGroup/SPIR-Tools/wiki/SPIR-2.0-built-in-functions">https://github.com/KhronosGroup/SPIR-Tools/wiki/SPIR-2.0-built-in-functions</a></div></div>