https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82701
--- Comment #1 from H. Peter Anvin <hpa at zytor dot com> --- I just stumbled onto this technique somewhat by accident: union dw { uint64_t q; uint32_t l[2]; }; union dw aa, bb; aa.q = a; bb.q = b; asm("add %2,%0; adc %3,%1"