------- Additional Comments From gj at pointblue dot com dot pl 2005-01-21 02:49 ------- it looks like that in x86_64.i file: unsigned long bn_add_words (unsigned long *rp, unsigned long *ap, unsigned long *bp,int n) { unsigned long ret,i; if (n <= 0) return 0; asm ( " subq %2,%2 \n" ".align 16 \n" "1: movq (%4,%2,8),%0 \n" " adcq (%5,%2,8),%0 \n" " movq %0,(%3,%2,8) \n" " leaq 1(%2),%2 \n" " loop 1b \n" " sbbq %0,%0 \n" "); asm "addq %: "+a"(ret),"+c"(n),"+r"(i) : "r"(rp),"r"(ap),"r"(bp) : "cc" ); return ret&1; } and in .s file: bn_add_words: .LFB11: .loc 1 154 0 .loc 1 156 0 .LBB25: xorl %r9d, %r9d testl %ecx, %ecx jle .L49 .loc 1 158 0 #APP subq %r8,%r8 .align 16 1: movq (%rsi,%r8,8),%rax adcq (%rdx,%r8,8),%rax movq %rax,(%rdi,%r8,8) leaq 1(%r8),%r8 loop 1b sbbq %rax,%rax #NO_APP movq %rax, %r9 .loc 1 172 0 andl $1, %r9d .loc 1 173 0 .L49: .LBE25: movq %r9, %rax ret so it looks like function written in assembler by programmer. At least to me.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19558