[llvm-dev] Portable multiplication 64 x 64 -> 128 for int128 reimplementation

Paweł Bylica via llvm-dev llvm-dev at lists.llvm.org
Sat Dec 29 15:03:00 PST 2018


Hi,

For some maybe dumb reasons I try to write a portable version of int128.

What is very valuable for this implementation is access to MUL instruction
on x86 which provides full 64 x 64 -> 128 bit multiplication. An equally
useful on ARM would be UMULH instruction.

Well, the way you can access this on clang / GCC is to use __int128 type or
use inline assembly. MSVC provides an intrinsic for this instruction. This
defeats the idea of portable int128 reimplementation and makes constexpr
implementation of multiplication at least inconvenient.

Maybe there is a hope for me in LLVM. Is there any pattern matcher that is
producing MUL instruction of bigger type?
If not, would it be good idea to teach LLVM about it?

Bests,
Paweł
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181230/4aa0ec7a/attachment.html>


More information about the llvm-dev mailing list