News for hackers. Stuff that matters.
Re:Building Your Own Efficient uint128 in C++ by cmovq on Monday February 02, 2026 @02:55AM (#46853538)
Last time I checked LLVM had surprisingly bad codegen for this using int128. On x86 you only need two instructions:

    __asm (
        "mulq %[multiplier]\n"
        "divq %[divisor]\n"
        : "=a"(result)
        : "a"(num), [multiplier]"r"(multiplier), [divisor]"r"(divisor)
        : "rdx"
    );
The intermediate 128bit number is in rdx:rax.
Re:Building Your Own Efficient uint128 in C++ by bonzini on Monday February 02, 2026 @03:18AM (#46853680)
That only works if you are sure to have a 64-bit result. If you can have divisor < multiplier and need to detect overflow, it's more complicated.