[cfe-dev] How to always enforce name mangling?
Daniel Schürmann via cfe-dev
cfe-dev at lists.llvm.org
Wed Nov 29 02:40:04 PST 2017
Of course, thanks for the interest.
The goal of this work is to enable OpenMP 4.x accelerator offloading for
OpenCL 2.1 devices.
By specifying "-fopenmp -fopenmp-targets=spir(64)-unknown-unknown", the
compiler should produce a fat binary consisting of host code and SPIR-V
target code. Using the LLVM fork from Nicholas Wilson (
http://lists.llvm.org/pipermail/llvm-dev/2017-May/112538.html ), I
created a toolchain to emit SPIR-V kernels and extended codegen to
generate appropriate code for this target. I also wrote an OpenCL 2.1
plugin for the OpenMP runtime subproject. Although the device runtime
routines are still missing, I already got some nice results.
Now, my problem is that some benchmarks use math lib functions (in
target regions). In principal, these functions are available on OpenCL
devices. However, the compiler doesn't mangle the function calls, which
makes the back-end not recognizing them as built-ins. Therefore, I would
like to mangle the names when openmp and spir are specified, according
to the spec.
Kind regards,
Daniel
On 11/28/2017 06:06 PM, Andreas Bergmeier wrote:
> That sounds very interesting. Can you get a bit more into detail?
>
> Cheers
> Andreas
>
> Daniel Schürmann via cfe-dev <cfe-dev at lists.llvm.org
> <mailto:cfe-dev at lists.llvm.org>> schrieb am Di., 28. Nov. 2017, 17:16:
>
> Hi all,
>
> I wanted to ask, if someone knows a possibility to always enforce
> name mangling,
> no matter what source language (but instead depending on other
> compiler flags).
>
> I am currently developing a SPIR-V target for OpenMP using OpenCL
> as runtime.
> Thus, I have C/C++ input files, but emit SPIR-V.
> The SPIR-V specification states: "By convention, for debugging
> purposes, modules with *OpSource*
> <https://www.khronos.org/registry/spir-v/specs/1.0/SPIRV.html#OpSource>
> /Source Language/ of OpenCL use the Itanium name-mangling standard."
> The problem arises, when I try to make use of built-in functions,
> which are expected to be mangled
> for the LLVM->SPIR-V transformation (with many of them being
> overloaded).
>
> Is there any global option which can be set on invocation or do I
> have to apply changes all over the place where the actual mangling
> happens? Then, it might be enough to change function names and
> calls. Is the name mangling done in the parsing/sema stage or in
> codegen?
>
> Kind regards,
> Daniel
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20171129/3f0fec4f/attachment.html>
More information about the cfe-dev
mailing list