On Thu, Jun 24, 2021 at 7:26 PM ALO via Gcc <gcc@gcc.gnu.org> wrote: > foo.c: In function '__fp16 foo(__fp16, __fp16)': > foo.c:6:23: error: call of overloaded 'exp(__fp16&)' is ambiguous > 6 | return a + std::exp(b); > | ^ >
No, there isn't a solution for this. You might want to try an ARM port clang/gcc to see what they do, but it probably isn't much better than the RISC-V port. Looks like the same gcc result to me with a quick check. And note that only the non-upstream V extension branch for RISC-V has the __fp16 support because the vector extension depends on it. It is hard to argue for changes when the official RISC-V GCC port has no __fp16 support. Kito started a related thread in March, and there was tentative agreement to add _Float16 support to the GCC C++ front end. https://gcc.gnu.org/pipermail/gcc/2021-March/234971.html That may or may not help you. I think it will be difficult to do anything useful here until the C and C++ standards figure out how they want half-float support to work. If we do something before then, it will probably end up incompatible with the official solution and we will end up stuck with a mess. Jim