[llvm-dev] builtins name mangling in SPIR 2.0 (original) (raw)
Hongbin Zheng via llvm-dev llvm-dev at lists.llvm.org
Fri Sep 16 21:32:54 PDT 2016
- Previous message: [llvm-dev] builtins name mangling in SPIR 2.0
- Next message: [llvm-dev] builtins name mangling in SPIR 2.0
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Fri, Sep 16, 2016 at 8:10 AM, Liu, Yaxun (Sam) <Yaxun.Liu at amd.com> wrote:
+ Alexey Anastasia
According to SPIR spec v1.2 s2.10.3 2.10.3 The printf function The printf function is supported, and is mangled according to its prototype as follows: int printf(constant char * restrict fmt, ... ) clang 3.9 will drop the 'restrict' when it mangle this name, or I am missing some commandline argument?
Thanks Hongbin
Note that the ellipsis formal argument (...) is mangled to argument type specifier z
It seems printf should be mangled. Alexey/Anastasia, What do you think? Thanks. Sam From: Hongbin Zheng [mailto:etherzhhb at gmail.com] Sent: Friday, September 16, 2016 1:54 AM To: Liu, Yaxun (Sam) <Yaxun.Liu at amd.com> Cc: cfe-dev at lists.llvm.org; llvm-dev <llvm-dev at lists.llvm.org> Subject: Re: builtins name mangling in SPIR 2.0 Hi Sam and others, I saw that in [1], printf is mangled to Z6printfPrU3AS2cz, while in clang's opencl-c.h[2], printf does not have the overload attribute: _int printf(constant const char* st, ...); (and it is different from the _standard, which is printf(restrict constant char *, ...)) I try the following code: #include <opencl-c.h> __kernel void vadd(_global const int* a, _global const int* b, global int* c) { printf("aaaaa"); } and get a printf that is not mangled: %call = tail call spirfunc i32 (i8 addrspace(2)*, ...) @printf(i8 addrspace(2)* getelementptr inbounds ([6 x i8], [6 x i8] addrspace(2)* @.str, i64 0, i64 0)) with the following command line: clang -cc1 -internal-isystem /wrk/xsjhdnobkup2/hongbinz/ omp/build-llvm/bin/../lib/clang/3.9.0/include -nostdsysteminc -S -emit-llvm -o - Is this the correct behavior? Thanks Hongbin [1] https://github.com/KhronosGroup/SPIR-Tools/wiki/ SPIR-2.0-built-in-functions [2] http://clang.llvm.org/doxygen/opencl-c8hsource.html On Mon, Sep 12, 2016 at 1:43 PM, Hongbin Zheng <etherzhhb at gmail.com> wrote: Thanks a lot. On Mon, Sep 12, 2016 at 1:42 PM, Liu, Yaxun (Sam) <Yaxun.Liu at amd.com> wrote: If you use the default header file under clang/lib/Headers/opencl-c.h, getglobalid will be mangled. If you want to declare getglobalid in your own header, add attribute((overloadable)), then it will be mangled. Sam From: Hongbin Zheng [mailto:etherzhhb at gmail.com] Sent: Monday, September 12, 2016 4:21 PM To: cfe-dev at lists.llvm.org; llvm-dev <llvm-dev at lists.llvm.org>; Liu, Yaxun (Sam) <Yaxun.Liu at amd.com> Subject: builtins name mangling in SPIR 2.0 Hi all, According to the SPIR 2.0 spec[1], the name of OpenCL builtins are mangled. 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: __kernel void inputzipint(global int *in0) { *in0 = getglobalid(0); } clang generates: define spirkernel void @inputzipint(i32 addrspace(1)* nocapture %in0) localunnamedaddr #0 !kernelargaddrspace !3 !kernelargaccessqual !4 !kernelargtype !5 !kernelargbasetype !5 !kernelargtypequal !6 { entry: %call = tail call spirfunc i128 @getglobalid(i32 0) #2 %conv = trunc i128 %call to i32 store i32 %conv, i32 addrspace(1)* %in0, align 4, !tbaa !7 ret void } In this case, getglobalid is not mangled to Z13getglobalidj according to [2]. Is there an option for clang or an LLVM clang to do the mangling for spir builtins? Thanks Hongbin
[1] https://www.khronos.org/registry/spir/specs/spirspec-2.0.pdf, page 36 [2] https://github.com/KhronosGroup/SPIR-Tools/wiki/ SPIR-2.0-built-in-functions -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160916/21ef8d9d/attachment.html>
- Previous message: [llvm-dev] builtins name mangling in SPIR 2.0
- Next message: [llvm-dev] builtins name mangling in SPIR 2.0
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]