http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55953
--- Comment #2 from Evgeniy Dushistov <dushistov at mail dot ru> 2013-01-12 00:05:15 UTC --- Actually it is not only CPU 64bit related issue, for example the same CPU (i7), 32 bit mode: variant one: push %ebp vmovdqa 0x80488e0,%ymm0 mov %esp,%ebp pop %ebp movb $0x30,0x804a0a0 vmovdqa %ymm0,0x804a040 vmovdqa %ymm0,0x804a060 vmovdqa %ymm0,0x804a080 movb $0x30,0x804a0a1 movb $0x30,0x804a0a2 movb $0x30,0x804a0a3 vzeroupper ret variant two: mov $0x804a040,%edx push %edi mov $0x30303030,%eax mov %edx,%edi mov $0x19,%ecx rep stos %eax,%es:(%edi) pop %edi ret The variant one win.