https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117266
--- Comment #11 from H. Peter Anvin <hpa at zytor dot com> --- For the record, MSVC has the following intrinsics, and no, I'm very much not in favor of their particular prototypes (a structure like div_t would be better than what they have.) #include <immintrin.h> unsigned __int64 _udiv128( unsigned __int64 highDividend, unsigned __int64 lowDividend, unsigned __int64 divisor, unsigned __int64 *remainder ); __int64 _div128( __int64 highDividend, __int64 lowDividend, __int64 divisor, __int64 *remainder ); For extra "flavor", the prototype for the 64/32 -> 32 version is inconsistent in that it uses int64 instead of 2x int32: unsigned int _udiv64( unsigned __int64 dividend, unsigned int divisor, unsigned int* remainder ); int _div64( __int64 dividend, int divisor, int* remainder );