Re: gcc optimizations
Andrea Pretto <[email protected]>
| Newsgroups | gmane.linux.gentoo.performance |
|---|---|
| Message-ID | <[email protected]> |
The flag -mmmx ( like -msse -m3dnow etc...) activate some extensions for C language. See this: http://gcc.gnu.org/onlinedocs/gcc-3.3.3/gcc/X86-Built-in-Functions.html#X86%20Built-in%20Functions So, those flag activate these built-in functions. --- Paul Ingelbrant <[email protected]> ha scritto: > > > > I've been thinking about CFLAGS such as -mmmx... > Does gcc actually have the > ability to actually produce mmx instructions? > > > for example: > > > mmx.c: > > #include <stdio.h> > > > main() > { > short x[100000]; > int i; > > for (i=0; i < 100000; i++) > { > x[i] += 5; > > } > > > } > > gcc -mmmx -O3 --save-temps -funroll-all-loops mmx.c > gives > > > .file "mmx.c" > .def ___main; .scl 2; .type 32; .endef > .text > .align 2 > .p2align 4,,15 > .globl _main > .def _main; .scl 2; .type 32; .endef > _main: > pushl %ebp > movl $200008, %eax > movl %esp, %ebp > call __alloca > xorl %eax, %eax > andl $-16, %esp > call __alloca > call ___main > xorl %eax, %eax > .p2align 4,,7 > L6: > addw $5, -200008(%ebp,%eax,2) > addw $5, -200006(%ebp,%eax,2) > addw $5, -200004(%ebp,%eax,2) > addw $5, -200002(%ebp,%eax,2) > addw $5, -200000(%ebp,%eax,2) > addw $5, -199998(%ebp,%eax,2) > addw $5, -199996(%ebp,%eax,2) > addw $5, -199994(%ebp,%eax,2) > addw $5, -199992(%ebp,%eax,2) > addw $5, -199990(%ebp,%eax,2) > addl $10, %eax > cmpl $99999, %eax > jle L6 > leave > ret > > > > > Shouldn't take too much imagination to see how that > could be improved with mmx... > > Likewise: > > > > fu(int *x) > { > if (*x == 5) > *x = 10; > } > > > > with gcc -march=athlon-xp -O3 --save-temps > -funroll-all-loops mmx.c > > gives > > > > _fu: > pushl %ebp > movl %esp, %ebp > movl 8(%ebp), %eax > cmpl $5, (%eax) > je L33 > L32: > leave > ret > .p2align 6,,7 > L33: > movl $10, (%eax) > jmp L32 > > > the -march=athlon-xp parameter should imply cmov > instruction...(?) > > > (it doesn't even use muliple leave/ret to eliminate > an extra jmp...) > > > > Do the gcc developers include these fancy parameters > just to give us ricers a > false sense of speed? > > > any thoughts? > > > > -- > [email protected] mailing list > > ____________________________________________________________ Yahoo! Companion - Scarica gratis la toolbar di Ricerca di Yahoo! http://companion.yahoo.it -- [email protected] mailing list