but the above does not work with hyphenation.
, GCC , ADC, , .
. , , , .
void Test(uint64_t* a, uint64_t* b, uint64_t* ans, int n)
{
for (int i = 0; i < n; ++i)
{
ans[i] = a[i] + b[i];
}
}
, GCC , .
Godbolt , C (, , ; , ). - , 64- . GCC SSE2 . , MOVDQU ( XMM), PADDQ ( ) MOVQ ( XMM ). , MOVDQU , 64- , PADDQ , MOVQ .
, , , GCC for. (-fno-tree-vectorize), , , , . (, . MOVQ , , , MOVDQU.)
, SSE2 (-mno-sse2), , . , SSE2, x86 64- , - ADD + ADC.
, , . , GCC , , -O2 -O3. -O1 ADD + ADC. , . (, , GCC ). . , .)
, Clang , GCC .
, , . , , , GCC ADC.
, x86-32. x86-64, 64- , ""; ADD , . , "bigint" 32- , x86-32 .
Ped7g , , , ADD + ADC. , , , , , , ADC. . , . -, , , .
( , c, , . , GCC XOR 64- CDQ , , .)
( , , GCC c . , . C, GCC , .)
, (intel) .
, , , ADC. , , !
, , , , , . , , , . , , , , C.
, -, , GCC. ; . , , . , "extended asm" , , ++ ".
, . , , ADC. - - , C, Right Thing ™.
_addcarry_u32 _addcarry_u64 intrinsics. ADCX ADOX. ADC, . Intel ADX, Broadwell. , Broadwell , ADCX ADOX . , , . , , , .
, 64- , : ADD + ADC
64- ADD ADC ( ADCX ADOX), 64- . 128- "bigint", .
x86-32 64- . SSE2, GCC Clang.