[Openmp-dev] Preferred alternative to a C++ dialect for device library functions

Jon Chesterfield via Openmp-dev openmp-dev at lists.llvm.org
Tue Jan 14 08:37:38 PST 2020


Hello OpenMP dev,

A motivating example is atomicInc for amdgcn. There is ISA support for this
so a good implementation folds to a single instruction. There is no
corresponding clang intrinsic, though there is an llvm intrinsic.

I see the following options:
- Implement it in IR, linked into deviceRTL
- Inline assembly
- Delay implementation until the intrinsic can be added to clang
- Implement in terms of CAS
- Your suggestion here

Adding atomicInc.ll to the source tree is the easy short term fix. It has
drawbacks in terms of future ABI change, build complexity and limited
precedent - libclc does this, but nowhere else.

Inline assembly works (modulo getting the syntax right) and hits the right
instruction.

Implementing in terms of CAS means one can stay in HIP or OpenCL, but
performance suffers.

What would the you prefer out of these options?

Thanks,

Jon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/openmp-dev/attachments/20200114/62e4e2cb/attachment.html>


More information about the Openmp-dev mailing list