Podle konvence (nezavisle na tom, je-li to fastcall, nebo ne) je navratova hodnota ulozena 'vzdy' v eax. (pro float, double, nebo 64-bit je to trosku jinak).
Tim __attribute__((regparm(3)) (3 je u x86 maximum) se jenom rika, aby se prvni tri predavane argumenty predaly pomoci registru (ono to zase muze byt slozitejsi, ale pro zjednoduseni to tak muzeme rict) a to poradi je uz napevno dane fastcall konvenci, tj. u gcc eax, ecx, edx. Kdyz jich predavas mene, nevadi... kdyz vice, zbytek se preda pres zasobnik.